我有哪些工作,直到我尝试添加自定义WebView它会停止处理JavaScript的一个非常基本的webViewClient。难道我做错了什么?有另一种方式来摆脱在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");
    }
有帮助吗?

解决方案 2

由于某种原因WebKit的运行JS不同于浏览器 - 我最终得到解决此问题,迫使一些JS与以下行运行该页面加载了之后:

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

其他提示

在我的应用我用下面并没有地址栏,和JavaScript的工作(修改,以符合您的命名):

browser = (WebView) findViewById(R.id.webkit);
browser.getSettings().setJavaScriptEnabled(true);

browser.loadUrl("http://site.with.javascript");

我不setWebViewClientsetWebChromeClient做任何事情,它的工作原理所描述的。

我觉得你的代码的问题是,你的默认(内部)WebViewClient启用JavaScript和/或WebChromeClient则取代那些用新的,现在有新的属性。

如果您的移动电话setJavaScriptEnabled(true)来的新任务后(和loadUrl我觉得你的代码将工作之前。

余物通过这样的决定的帮助。涡卷计算在一个匿名函数。

"javascript:" + "(function(){ <YOUR CODE> })();"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top