Android将外部本地javascript文件加载到WebView中

时间:2011-03-25 17:12:30

标签: javascript android parsing webview local

在Android 2.2 WebView中,我加载了一个本地html文件,该文件包含一个指向JavaScript文件的链接(与html文件位于同一文件夹中)。本地html文件成功加载但引用的JavaScript本地文件没有,我在LogCat日志中收到此错误:

  

03-25 16:48:57.965:ERROR / Web   控制台(10865):SyntaxError:Parse   错误   文件:///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>

3 个答案:

答案 0 :(得分:2)

我发现这个错误是由于js文件的打包方式造成的。应用程序在初始化时从SQLite资产数据库中读取文件,并将读取的文件写入设备本地文件系统。使用Firefox SQLite Manager将js文件作为文本保存在SQLite数据库中。当我将SQL文件管理器中的js文件保存为BLOB而不是文本时,一切都按预期工作,并且WebView能够从设备本地文件系统成功加载js文件。这对于html文件似乎并不重要,但对于js文件,解析器在文件末尾寻找某些内容,如果找不到它,则忽略js文件

我怀疑这可能是由于缺少文件结尾字符,由于某些原因,当我使用java输出流编写文件时,当资产输入流不包含文件结束字符时,这些字符没有添加。

答案 1 :(得分:0)

我会查看android文档中的WebView引用。来自Doc:

  

默认情况下,WebView不提供类似浏览器的小部件,不会启用JavaScript并忽略网页错误。如果您的目标只是将一些HTML显示为UI的一部分,那么这可能很好;除了阅读之外,用户不需要与网页交互,并且网页不需要与用户交互。如果您真的想要一个完整的Web浏览器,那么您可能想要使用URL Intent调用Browser应用程序而不是使用WebView显示它

但您可以通过setJavaScriptEnabled()在网页浏览中启用它。

答案 2 :(得分:0)