【问题标题】:Android WebView: Using relative paths when loading javascript from assetsAndroid WebView:从资产加载javascript时使用相对路径
【发布时间】:2014-03-01 19:58:02
【问题描述】:

我能够创建一个 Android hello world 应用程序,该应用程序使用 WebView.loadDataWithBaseURL 方法从 assets 文件夹加载 html 文件:

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

我的 html 看起来有点像这样:

<!DOCTYPE html>
<html>
<head>
    <meta charset="ISO-8859-1">
    <title>Insert title here</title>

    <script src="/js/lib/jquery-1.11.0.js"></script> <!-- This script is not being loaded -->
    <script src="helloWorld.js"></script> <!-- This script is being loaded -->

</head>
<body>
    <div id="placeholder"></div>
</body>
</html>

问题如下: jquery-1.11.0.js 没有被加载,而 helloWorld.js 文件成功加载。我验证了该文件存在于相对路径下。

如果我将 jquery-1.11.0.js 移动到 html 文件位置(到 helloWorld.js 所在的同一位置),它可以解决问题。但我想使用相对路径来加载脚本。提前致谢。

更新:

  1. 移动 /assets/appcode/ 下的所有 js 文件不是一个选项, 因为我打算重用依赖这些的 html 文件 相对路径
  2. 使用 CDN 链接将不起作用,因为我是 计划加载我自己的脚本,这些脚本在网络上不可用
  3. 如果我使用“file:///android_asset/appcode/js/lib/jquery-1.11.0.js”而不是“/js/lib/jquery-1.11.0.js”,它也可以。但这是绝对路径,当我想使用相对路径时。

【问题讨论】:

    标签: javascript android jquery html webview


    【解决方案1】:

    我建议你改用 CDN:

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script src="helloWorld.js"></script>
    

    【讨论】:

    • 这只会解决 jquery 的问题。我在 /js/lib/ 文件夹下有自己的 javascript 文件,无法从网络加载。
    【解决方案2】:

    绝对路径有时在 WebView 中不起作用,例如 JavaScript 文件。 我建议使用带点(。)的相对路径,然后是路径

    <script src="./js/lib/jquery-1.11.0.js"></script>
                 ^ 
    

    【讨论】:

      猜你喜欢
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      相关资源
      最近更新 更多