2012-12-12 48 views
3
WebView web_view = (WebView) findViewById(R.id.webView1); 
     web_view.getSettings().setJavaScriptEnabled(true); 
     web_view.getSettings().setPluginsEnabled(true); 
     web_view.getSettings().setAllowFileAccess(true); 

     String data; 
     data = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" 
       + "<html>" 
       + "<head>" 
       + "<title>My First chart using FusionCharts XT</title>" 
       + "<script type=\"text/javascript\" src=\"FusionCharts.js\">" 
       + "</script>" 
       + "</head>" 
       + "<body>" 
       + "<div id=\"chartContainer\">FusionCharts XT will load here!</div>" 
       + "<script type=\"text/javascript\">" 
       + "FusionCharts.setCurrentRenderer(\"javascript\");" 
       + "var myChart = new FusionCharts(\"FusionCharts/Line.swf\", \"myChartId\", \"400\", \"300\", \"0\", \"1\");" 
       + "var dataString =\"<chart> <set label='0.00' value='0'/><set label='5.00' value='2' /><set label='7.00' value='3' /><set label='9.00' value='4' /><set label='12.00' value='2' /></chart>\"; " 
       + "myChart.setXMLData(dataString);" 
       + "myChart.render(\"chartContainer\");" + "</script>" 
       + "</body>" + "</html>"; 

     Log.i("info", "Html " + data); 

     web_view.loadData(data, "text/html; charset=UTF-8",null); 

在我的項目中,我使用融合圖表。我正在製作一個html字符串數據,並在WebView中加載它,就像上面的代碼示例一樣。當我在瀏覽器中運行這個HTML文件時,它運行並使我成爲Fusion圖表,但是當我爲Android Web視圖執行此操作時,它不會在我的Web視圖中加載。 我已經啓用javascript。 我將JavaScript文件粘貼到assets文件夾中。Android:無法在WebView中加載具有JavaScript文件的簡單html數據?

回答

3

首先,您提到的瀏覽器是設備上的瀏覽器還是計算機上的瀏覽器?

現在,如果它在android瀏覽器(或您的設備中的瀏覽器)中工作,那麼問題是因爲JavaScript文件在您的資產文件夾。當您通過相對路徑(您使用的方式)指示資源時,webview會搜索與您的html文件相同的文件夾。由於您使用String作爲「html文件」,因此我會建議使用loadDataWithBaseURL()。我在下面使用assets文件夾作爲基本URL進行了使用示例,請嘗試使用它。

web_view.loadDataWithBaseURL("file:///android_asset/", data, "text/html", "UTF-8",null); 

公共無效loadDataWithBaseURL(字符串的baseUrl,字符串數據,字符串mime類型,字符串編碼,字符串historyUrl)

在API級別1 加載給定的數據到該web視圖,使用的baseUrl作爲內容的基本網址。基本URL既用於解析相對URL,也用於應用JavaScript的相同源策略。 historyUrl用於歷史記錄。

請注意,只有當baseUrl指定的方案不是'http','https','ftp','ftps','about'時,這種指定的內容才能訪問本地設備文件(通過「文件」方案URL) '或'javascript'。

如果基URL使用數據方案,則此方法等效於調用loadData(),並且忽略historyUrl。

參數 baseUrl用作頁面基本URL的URL。如果null默認爲'about:blank'。 數據a給定編碼中的一串數據 mimeType數據的MIMEType,例如'text/html的'。如果爲null,則默認爲'text/html'。 編碼數據的編碼 historyUrl用作歷史記錄條目的URL。如果null默認爲'about:blank'。

您可以嘗試通過資產的文件夾中的baseUrl,所以我的猜測是,你的代碼會是這樣

希望這有助於!

相關問題