我一直在爭論這個問題已超過48小時,我一直無法在網上找到答案。設置如下:Android Webview HTML加載Javascript問題
我的Android應用程序在第一次運行時(內容超過20MB)正在下載內容,並將文件解壓縮到用戶的SD卡上/ mnt/sdcard/{my package} /文件夾中。內容包括HTML文件,CSS文件,JS文件和圖像。下面是什麼寫入SD卡(其中/ =到/ mnt/SD卡/ {我的包} /文件夾/)的完整結構:
/內容/
a.html
b.html
images/
image1.jpg
/CSS/
c.css
d.css
/JS/
e.js
f.js
這裏是我的代碼加載從SD卡中的HTML文件:
webView = (WebView) findViewById(R.id.pageBrowser);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new LinkHandlerInterface(), "Android");
webView.setWebViewClient(new PageWebViewClient());
// contentLocation + url is equal to the full path to the html file
webView.loadUrl("file://" + contentLocation + url);
此代碼成功加載HTML頁面。沒問題。每頁有以下頭標籤:
<link rel="stylesheet" type="text/css" href="../css/screen.css" media="all" />
<link rel="stylesheet" type="text/css" href="../css/inPractice.css" media="all" />
<link rel="stylesheet" type="text/css" href="../css/inPracticeScheme.css" media="all" />
<link rel="stylesheet" type="text/css" href="../css/mobile/iPad.css" media="all" />
<script type="text/javascript" src="../js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="../js/inPractice-utilities.js"></script>
<script type="text/javascript" src="../js/inPractice.js"></script>
<script type="text/javascript" src="../js/mobile/inpractice.ipad.js"></script>
這裏是問題所在。我的WebView呈現HTML就好了。它甚至可以完美地加載和應用CSS。但是,它拒絕加載和執行Javascript。如果你從上面記得,js文件夾實際上是一個從html文件開始的文件,所以它指向了正確的位置。
這裏是我所知道的一個列表:
我使用的CSS被應用罰款,所以我知道這個問題是不是與文件位置。
我之前使用過這個相同的代碼,但是從我的應用程序的資產文件夾(文件:/// android_assets/...)加載文件,它的工作完美。由於內容太大,我無法將其與我的應用程序捆綁在一起,因此轉移到了SD卡。
如果我以一種腳本標記內列出的所有JavaScript方法來更改HTML文件,它將正常工作。我無法控制HTML,因此我無法永久應用此更改。這告訴我WebView沒有執行Javascript的問題。
圖像加載正常。
我現在很新鮮。有沒有人有任何線索爲什麼我的WebView無法加載我的Javascript文件?有沒有人見過這個?
編輯:這裏是JS文件我試圖使用可以在這裏查看:
http://www.automatastudios.com/clients/cco/inpractice/css/inPractice.css http://www.automatastudios.com/clients/cco/inpractice/css/inPracticeScheme.css http://www.automatastudios.com/clients/cco/inpractice/css/screen.css http://www.automatastudios.com/clients/cco/inpractice/css/mobile/iPad.css
- 注意:這些CSS文件不是由我創作的。
我不知道這可能最終成爲了一個問題, Android不允許來自SD卡的JS在WebView中執行? – Keenan 2011-03-18 16:39:44