链接到 iOS PhoneGap 3.3 上的本地文件 (cdvfile://)
Posted
技术标签:
【中文标题】链接到 iOS PhoneGap 3.3 上的本地文件 (cdvfile://)【英文标题】:Link to local files (cdvfile://) on iOS PhoneGap 3.3 【发布时间】: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 中打开指向我的计算机的页面,样式会正确显示。
我尝试了一些方法,但无济于事:
在<head>
中添加<base href="cdvfile://localhost/persistent/MyApp/">
更新我所有的 href 和 src 以获得完整的 cdvfile 路径(例如使用 <link href="cdvfile://localhost/persistent/MyApp/css/reseter.css" rel="stylesheet">
)
【问题讨论】:
【参考方案1】:我终于通过使用fileSystem.root.fullPath
在 PhoneGap 2.9 中工作了。在 PhoneGap 3.3 上,它只返回 /
。这是 PhoneGap 3.3 上的一个错误,当使用 cdvfile 时,除了 CSS 文件之外,一切似乎都可以工作?
我决定暂时使用相对路径到我在 PhoneGap 3.3 上的 iOS 应用:../../Documents/MyApp/index.html
。我不知道它是否可以安全使用。
EDIT 在 Phonegap 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
如果拉取请求被接受,记得撤消它。
【讨论】:
以上是关于链接到 iOS PhoneGap 3.3 上的本地文件 (cdvfile://)的主要内容,如果未能解决你的问题,请参考以下文章
Android 上的 PhoneGap 3.3 和移动服务 HTML 应用程序
如何在 iOS 中使用自定义 phonegap 3.3 插件
Cordova/Phonegap 3.3 中的外部链接/InAppBrowser 总是表现得像“_self”