Xamarin形式的WebView评估和演示不调用JavaScript的

Xamarin形式的WebView评估和演示不调用JavaScript的

问题描述:

我用下面的代码加载页面MyWebViewXamarin形式的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)"); 
} 

页呈现良好 - 所有脚本运行过,但此警报不会触发,有哪些可能的原因?

+0

您应该允许运行脚本的权限。如果您将其写入加载页面的JS的文档就绪事件中,它会起作用吗? –

+0

我把警报放在身上,它起作用。 – cuddlecheek

+0

看看这个链接:http://www.tipsabc.com/2016/xamarin-forms-communicate-javascript-webview-native-code/ –

我想我找出了为什么它可能无法正常工作。在WebView被完全初始化或者网页被渲染之前触发Eval,所以该脚本被激怒,但没有任何效果。

请试试这个:

webView.Navigated += (o, s) => { 
    webView.Eval("alert('text')"); 
    }; 
+0

你的解决方案的解释通常是有帮助的 – happymacarts

+0

@happymacarts解释是在我的答案。 – cuddlecheek

+1

@KamilSmrčka和cuddlecheek都是正确的。 JavaScript未触发的原因是因为该页面尚未完成加载。 Navigated事件的文档(https://developer.xamarin.com/api/event/Xamarin.Forms.WebView.Navigated/)中的描述是:“导航完成后引发的事件。”所以在上面的回答中,Kamil正在订阅Navigated事件(在这种情况下是页面加载完成事件)并在它触发后执行JavaScript。 –