【问题标题】:Xamarin form webview Eval not calling javascriptXamarin 表单 webview Eval 不调用 javascript
【发布时间】:2016-12-08 23:17:36
【问题描述】:

我使用以下代码将页面加载到MyWebView

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)");
}

页面渲染良好 - 所有脚本也运行,但没有触发此警报,可能的原因是什么?

【问题讨论】:

  • 您应该允许运行脚本的权限。写在加载页面的JS的文档就绪事件中是否有效?
  • 我将警报放在正文的加载中,它可以工作。
  • 查看此链接:tipsabc.com/2016/…
  • 等等,根据这个:developer.xamarin.com/recipes/cross-platform/xamarin-forms/… 不需要创建自定义渲染器之类的,那为什么呢?
  • 只有在您需要一些高级选项时才需要它,还有 XLabs 的 ExtendedWebView。除此之外,这段代码很难进一步解释。

标签: javascript xamarin webview xamarin.forms


【解决方案1】:

请试试这个:

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

【讨论】:

  • 对您的解决方案的解释通常很有帮助
  • @happymacarts 解释在我的回答中。
  • @Kamil Smrčka 和 cuddlecheek 都是正确的。 JavaScript 未触发的原因是页面尚未完成加载。导航事件的文档 (developer.xamarin.com/api/event/Xamarin.Forms.WebView.Navigated) 中的描述是:“导航完成后引发的事件。”所以在上面的答案中,Kamil 订阅了 Navigated 事件(在这种情况下是页面加载完成事件)并在它触发后执行他的 JavaScript。
  • @JohnLay 那仍然对我不起作用。不显示任何警报。
【解决方案2】:

我想我明白了为什么它可能不起作用。 Eval在WebView完全初始化或网页渲染之前触发,所以脚本被触发,但没有任何作用。

【讨论】:

    猜你喜欢
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多