【问题标题】:JavaScript doesn't work in Android WebViewJavaScript 在 Android WebView 中不起作用
【发布时间】:2012-12-02 09:13:40
【问题描述】:

我想通过 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 版本是什么?
  • @AliImran 设备是带有 Android 4.1.1 的 Nexus S,你的意思是这个吗?

标签: javascript android webview


【解决方案1】:

如果您使用 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 *;
#}

【讨论】:

  • 你如何使用它?我的意思是你只是从类中删除#符号:?还是应该复制到代码块上?
【解决方案2】:

我认为 javascript 文件缓存/刷新存在一些问题。我更改了 js 的文件名,它开始正常工作。

【讨论】:

    猜你喜欢
    • 2011-11-24
    • 2018-11-09
    • 2014-07-31
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多