【问题标题】:Android load external local javascript file into WebViewAndroid将外部本地javascript文件加载到WebView
【发布时间】:2011-03-25 17:12:29
【问题描述】:

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

03-25 16:48:57.965: 错误/网络 控制台(10865):语法错误:解析 错误在 file:///data/data/com.mydomain.myapp/test.js:91

错误的行号是文件的最后一行,错误日志中的路径是js文件的正确路径。当然,一切都在 Chrome 中按预期工作。这是html文件的sn-p

<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>

【问题讨论】:

    标签: javascript android parsing webview local


    【解决方案1】:

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

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

    【讨论】:

    • 那么你是怎么解决的呢?您是否能够在加载到 webview 的 html 中使用外部 js 文件?
    【解决方案2】:

    我会查看 android 文档中的 WebView 参考。来自文档:

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

    不过,您可以通过setJavaScriptEnabled() 在网络视图上启用它。

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 2011-09-25
        • 2019-04-24
        • 2013-10-05
        • 1970-01-01
        • 1970-01-01
        • 2021-12-27
        • 1970-01-01
        • 2020-01-16
        • 1970-01-01
        相关资源
        最近更新 更多