2012-05-29 72 views
3

鑑於此頁: http://music.10086.cn/newweb/qk/guoso/1C5DB9AC5C346441/t/6.html爲什麼Android WebView.loadDataWithBaseUrl()無法呈現JavaScript?

使用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冰淇淋三明治4.0.3。

+1

我看到了與本地JS和CSS相同的東西。也許他們在ICS中引入了一些安全執法? – Maarten

+0

感謝您的確認。是的,也許。但是要花費太多時間才能通過Android WebKit源代碼進行調試。 – mparaz

回答

2

有幾件事情要仔細檢查:

  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); 
}