【问题标题】:Why does Android WebView.loadDataWithBaseUrl() fail to render the JavaScript?为什么 Android WebView.loadDataWithBaseUrl() 无法渲染 JavaScript?
【发布时间】:2012-06-03 21:31:26
【问题描述】:

鉴于此页面: http://music.10086.cn/newweb/qk/guoso/1C5DB9AC5C346441/t/6.html

开启了 JavaScript 的 WebView 可以通过 loadUrl() 正确打开并渲染 JavaScript。

但是,如果页面的内容使用 HTTP 客户端单独加载,并在设置了基本 URL 的情况下提供给 loadDataWithBaseUrl(),则 JavaScript 无法正常工作:

// store http://music.10086.cn/newweb/qk/guoso/1C5DB9AC5C346441/t/6.html into data

webView.loadUrl("http://music.10086.cn/", data, "text/html", "UTF-8", null);

我怀疑远程脚本没有加载。我怎样才能让 WebView 记录这个?

这是在 Android Ice Cream Sandwich 4.0.3 上。

【问题讨论】:

  • 我在本地 JS 和 CSS 中也看到了同样的情况。也许他们在 ICS 中引入了一些安全措施?
  • 感谢您的确认。是的,也许。但是通过Android WebKit源码调试会占用太多时间。

标签: javascript android webkit


【解决方案1】:

有几件事需要仔细检查:

  1. 您已将<uses-permission android:name="android.permission.INTERNET" /> 包含在AndroidManifest.xml
  2. 您已致电webView.getWebSettings.setJavaScriptEnabled(true);
  3. 您的 HTML 格式正确

以下代码对我有用,从 http://code.jquery.com/ 加载 jquery:

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);
    mWebView = (WebView) findViewById(R.id.webview);
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    mWebView.setWebChromeClient(new MyWebChromeClient());
    String mimeType = "text/html";
    String encoding = "utf-8";
    String html = "<html>  "
      + "<script src='jquery-1.10.1.min.js'></script>"
      + "<script language='javascript'>"
      + "function sayHello() {       "
      + "alert(typeof($));    "
      + "}  </script>  "
      + "<body>    "
      + "   <a onClick='sayHello()'><div style='width:80px; "
      + "   margin:0px auto;  " + "  padding:10px;    "
      + "text-align:center;   " + " border:2px solid #202020;' > "
      + "<br> "
      + "    Click me!   " + "</div></a> " + " </body>" + " </html>";
    mWebView.loadDataWithBaseURL("http://code.jquery.com/", html, mimeType, encoding,null);
}

【讨论】:

    猜你喜欢
    • 2014-11-26
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 2016-05-22
    • 1970-01-01
    相关资源
    最近更新 更多