【问题标题】:android: webview not loading javascript with custom WebViewClientandroid:webview 不使用自定义 WebViewClient 加载 javascript
【发布时间】:2010-08-06 12:08:13
【问题描述】:

我有一个非常基本的WebView,直到我尝试添加一个自定义webViewClient,它停止处理JavaScript。难道我做错了什么?是否有另一种方法可以摆脱 WebView 中的地址栏和菜单选项?

    browser = (WebView) findViewById(R.id.webkit);

    WebSettings webSettings = browser.getSettings();
    webSettings.setJavaScriptEnabled(true);

    // uncommenting this line will remove address bar, but also stop JavaScript from loading
    //browser.setWebViewClient(new InternalWebViewClient());

    // even uncommenting this line will stop JavaScript from loading
    //browser.setWebViewClient(new WebViewClient());

    browser.setWebChromeClient(new InternalWebChromeClient());
    if (savedInstanceState != null) {
        browser.restoreState(savedInstanceState);
    } else {
        browser.loadUrl("http://site.with.javascript");
    }

【问题讨论】:

    标签: javascript android webview webviewclient


    【解决方案1】:

    在我的应用程序中,我使用以下内容并且没有地址栏,并且 JavaScript 可以工作(已修改以匹配您的命名):

    browser = (WebView) findViewById(R.id.webkit);
    browser.getSettings().setJavaScriptEnabled(true);
    
    browser.loadUrl("http://site.with.javascript");
    

    我不使用 setWebViewClientsetWebChromeClient 做任何事情,它的工作原理与描述的一样。

    我认为您的代码的问题在于您在默认的(内部)WebViewClient 和/或 WebChromeClient 上启用了 JavaScript,然后将它们替换为现在具有新属性的新的。

    如果您将 setJavaScriptEnabled(true) 调用移到这些新分配之后(并且在 loadUrl 之前,我认为您的代码会起作用。

    【讨论】:

      【解决方案2】:

      由于某种原因,webkit 运行 JS 的方式与浏览器不同 - 我最终通过在页面加载后强制一些 JS 运行以下行来解决这个问题:

      browser.loadUrl("javascript:document.getElementById('something').do.something()");
      

      【讨论】:

        【解决方案3】:

        这样的决定帮助了我。将计算封装在匿名函数中。

        "javascript:" + "(function(){ <YOUR CODE> })();"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-11-12
          • 2013-03-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-06
          • 2017-09-23
          相关资源
          最近更新 更多