Xamarin形式的WebView评估和演示不调用JavaScript的
我用下面的代码加载页面MyWebView
:Xamarin形式的WebView评估和演示不调用JavaScript的
private void DisplayLocalPage(string filename)
{
var html = new HtmlWebViewSource();
html.BaseUrl = DependencyService.Get<IBaseUrl>().Get();
html.Html = ReadFile(filename);
MyWebView.Source = html;
MyWebView.Eval("alert(200)");
}
页呈现良好 - 所有脚本运行过,但此警报不会触发,有哪些可能的原因?
我想我找出了为什么它可能无法正常工作。在WebView被完全初始化或者网页被渲染之前触发Eval,所以该脚本被激怒,但没有任何效果。
请试试这个:
webView.Navigated += (o, s) => {
webView.Eval("alert('text')");
};
你的解决方案的解释通常是有帮助的 – happymacarts
@happymacarts解释是在我的答案。 – cuddlecheek
@KamilSmrčka和cuddlecheek都是正确的。 JavaScript未触发的原因是因为该页面尚未完成加载。 Navigated事件的文档(https://developer.xamarin.com/api/event/Xamarin.Forms.WebView.Navigated/)中的描述是:“导航完成后引发的事件。”所以在上面的回答中,Kamil正在订阅Navigated事件(在这种情况下是页面加载完成事件)并在它触发后执行JavaScript。 –
您应该允许运行脚本的权限。如果您将其写入加载页面的JS的文档就绪事件中,它会起作用吗? –
我把警报放在身上,它起作用。 – cuddlecheek
看看这个链接:http://www.tipsabc.com/2016/xamarin-forms-communicate-javascript-webview-native-code/ –