链接到iOS PhoneGap 3.3上的本地文件(cdvfile://)

时间:2014-04-02 04:22:32

标签: ios cordova

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

编辑 - 请注意,这在Phonegap 3.4中有效,但在3.5上没有(当我尝试更改位置时似乎没有发生任何事情)。如果我使用toURL代替toNativeURL,那么它也适用于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中打开指向计算机的页面,则会正确显示样式。

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

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

3 个答案:

答案 0 :(得分:2)

我终于使用fileSystem.root.fullPath PhoneGap 2.9 中使用了它。在PhoneGap 3.3上,它只返回/。这是PhoneGap 3.3上的一个错误吗,当使用cdvfile时,除了CSS文件外,一切似乎都有效吗?

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

编辑 Phonegap 3.5 (我还没有在3.3中测试过),使用工作window.location = workingDirectory.toNativeURL() + "/index.html";(即使用{{1}而不是toNativeURL )。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您似乎遇到了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

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