【问题标题】:Link to local files (cdvfile://) on iOS PhoneGap 3.3链接到 iOS PhoneGap 3.3 上的本地文件 (cdvfile://)
【发布时间】:2014-04-02 04:22:32
【问题描述】:

为了轻松更新我的应用,我将 www 文件夹的内容复制到手机中,然后执行window.location = workingDirectory.toURL() + "/index.html"

编辑 - 请注意,这在 Phonegap 3.4 之前有效,但在 3.5 上无效(当我尝试更改位置时似乎没有发生任何事情)。如果我使用toNativeURL 而不是toURL,那么它也适用于3.5。 使用toNativeURL 也修复了iOS 上的当前问题

复制所有文件并打开索引在 iOS 和 Android 上都可以正常工作。不过,iOS 上的问题是页面绝对没有样式,好像指向 CSS 文件的链接不起作用。在 Android 上一切正常。

我的链接是相对的(例如<link href="css/reseter.css" rel="stylesheet">)。指向其他页面或脚本的链接确实有效。

这是我打开的简化主页:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link href="style.css" rel="stylesheet">
    <script src="main.js"></script>
</head>
<body>
    <div class="red">I should be red but I'm not!</div>
    <a href="page2.html">This correctly takes me to the other page.</a>
</body>
</html>

style.css

.red { color: red; }

main.js

alert("HELLO is correctly displayed");

我正确地得到了alert(它的标题是cdvfile://localhost/),我也可以正确地转到page2.html。唯一的问题是样式。

如果我在 Safari 中打开指向我的计算机的页面,样式会正确显示。

我尝试了一些方法,但无济于事:

  • &lt;head&gt; 中添加&lt;base href="cdvfile://localhost/persistent/MyApp/"&gt;
  • 更新我所有的 href 和 src 以获得完整的 cdvfile 路径(例如使用 &lt;link href="cdvfile://localhost/persistent/MyApp/css/reseter.css" rel="stylesheet"&gt;

【问题讨论】:

    标签: ios cordova


    【解决方案1】:

    我终于通过使用fileSystem.root.fullPathPhoneGap 2.9 中工作了。在 PhoneGap 3.3 上,它只返回 /。这是 PhoneGap 3.3 上的一个错误,当使用 cdvfile 时,除了 CSS 文件之外,一切似乎都可以工作?

    我决定暂时使用相对路径到我在 PhoneGap 3.3 上的 iOS 应用:../../Documents/MyApp/index.html。我不知道它是否可以安全使用。

    EDITPhonegap 3.5 中(我没有在 3.3 中测试过),使用工作 window.location = workingDirectory.toNativeURL() + "/index.html";(即 使用 toNativeURL 而不是 toURL ) 有效。

    【讨论】:

    • 我有同样的问题,我暂时使用
    • 现在我正在使用该 hack,因为它确实有效,而且非常易于使用。如果新的 Phonegap 版本能解决问题,我将不得不不时进行测试。
    【解决方案2】:

    检查以下链接(插件已更改): http://cordova.apache.org/news/2014/02/10/plugins-release.html

    【讨论】:

    • 确实在 2 月份发生了一些变化,但在我看来仍然是一个 bug,在 Android 上一切正常,除了 CSS 之外的一切都在 iOS 上运行......
    • issues.apache.org/jira/browse/CB-6532 我会尝试使用 Phonegap 3.4 和最新插件,看看它是否能解决问题。
    • Phonegap 3.4 和 org.apache.cordova.file 1.0.1 仍然存在同样的问题。
    • 正如那里写的那样,使用 toURL 或 toNativeURL 方法。
    【解决方案3】:

    您似乎遇到了CB-6532。我刚刚提交了一个修复请求——你可以暂时使用我的 fork,直到它被接受:

    https://github.com/loufranco/cordova-plugin-file

    要使用它,请执行

      cordova plugin remove org.apache.cordova.file
      cordova plugin add https://github.com/loufranco/cordova-plugin-file.git
    

    如果拉取请求被接受,记得撤消它。

    【讨论】:

      猜你喜欢
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      相关资源
      最近更新 更多