簡體   English   中英

Android將外部本地javascript文件加載到WebView中

[英]Android load external local javascript file into WebView

在Android 2.2 WebView中,我加載了一個本地html文件,該文件包含一個JavaScript文件的鏈接(與html文件位於同一個文件夾中)。 本地html文件成功加載但引用的JavaScript本地文件沒有,我在LogCat日志中收到此錯誤:

03-25 16:48:57.965:錯誤/ Web控制台(10865):SyntaxError:文件中的解析錯誤:///data/data/com.mydomain.myapp/test.js:91

錯誤的行號是文件的最后一行,錯誤日志中的路徑是js文件的正確路徑。 當然,一切都在Chrome中按預期工作。 這是html文件的片段

<html>
<head>
    <title>My Title</title>
    <meta name = "viewport" content = "width = device-width">
    <meta name = "viewport" content = "initial-scale = 1.0">
    <script type="text/javascript" src="test.js"></script>
    <script type="text/javascript">
        button_onclick = function() {};
    </script>

我發現這個錯誤是由於js文件的打包方式造成的。 應用程序在初始化時從SQLite資產數據庫中讀取文件,並將讀取的文件寫入設備本地文件系統。 使用Firefox SQLite Manager將js文件作為文本保存在SQLite數據庫中。 當我將SQL文件管理器中的js文件保存為BLOB而不是文本時,一切都按預期工作,並且WebView能夠從設備本地文件系統成功加載js文件。 對於html文件來說這似乎並不重要,但是對於js文件,解析器在文件的末尾尋找一些東西,如果找不到它,那么它會忽略js文件

我懷疑這可能是由於缺少文件結尾字符,由於某些原因,當我使用java輸出流寫入文件時,當資產輸入流不包含文件結尾字符時,這些字符沒有添加。

我會查看android文檔中的WebView參考。 來自Doc:

默認情況下,WebView不提供類似瀏覽器的小部件,不啟用JavaScript並忽略網頁錯誤。 如果您的目標只是將一些HTML顯示為UI的一部分,那么這可能很好; 除了閱讀之外,用戶不需要與網頁交互,並且網頁不需要與用戶交互。 如果您真的想要一個完整的Web瀏覽器,那么您可能希望使用URL Intent調用Browser應用程序而不是使用WebView顯示它

但是,您可以通過setJavaScriptEnabled()setJavaScriptEnabled()上啟用它。

按照答案確定webview中的url元素shouldOverRideUrlLoading及其中的鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM