JavaScript在Android WebView中无法工作。

6
我想通过webView加载一个url。 这个url是http://wapp.baidu.com/f?kw=%BB%F0%BC%FD,该页面在系统默认浏览器中可以正常工作,但是在我的webView中,一些JavaScript无法正常工作。 JavaScript已启用,我不知道出了什么问题。 感谢任何帮助。
private void initUI() {
    webView = (WebView) findViewById(R.id.web_view);
    webView.getSettings().setJavaScriptEnabled(true);

    final NavigationBar navigationBar = (NavigationBar) findViewById(R.id.navigationbar);
    navigationBar.refreshUI();
    navigationBar.rightButton.setImageResource(R.drawable.refresh);
    navigationBar.rightButton.setVisibility(View.VISIBLE);
    navigationBar.rightButton.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            refresh();
        }

    });

    navigationBar.leftButton.setImageResource(R.drawable.back);
    navigationBar.leftButton.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {
            webView.goBack();
        }

    });

    webView.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        public void onPageFinished(WebView view, String url) {
            navigationBar.leftButton.setVisibility(webView.canGoBack() ? View.VISIBLE
                    : View.INVISIBLE);
            super.onPageFinished(view, url);
        }
    });

    refresh();
}

更新:问题已解决。只需添加以下代码:
webView.getSettings().setDomStorageEnabled(true);

你正在测试的设备的API版本是多少? - Ali Imran
@AliImran 这个设备是安卓4.1.1的Nexus S,你是指这个吗? - soso327
2个回答

0
如果您正在使用Proguard,它会停止JavaScript运行。例如,在我的proguard-project.txt文件中,我有以下内容:
if your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

1
你怎么使用它?我的意思是,你只需从class:中删除#符号吗?还是应该将其复制到代码块中? - Mustafa Güven

0

我认为JavaScript文件缓存/刷新存在一些问题。我更改了js文件名,现在它可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接