【发布时间】:2013-04-25 02:25:40
【问题描述】:
背景
我正在尝试将基于 Cordova 2.0 构建的 iOS 应用升级到 2.7 版。
它基本上是一个指向远程搜索引擎的欢迎屏幕(请不要让 cmets 关于应用程序的有效性和可能的批准,因为我们已经过去了),我们使用 ChildBrowser 插件来启用在子目录中打开链接浏览器,以免将用户困在 Cordova webview 中。
Cordova 2.7 有一个名为InAppBrowser 的功能,我希望用它来代替 ChildBrowser。 InAppBrowser 基本上做同样的事情,除了缺少一个在 Safari 中打开的按钮。
问题
现有应用的远程网页包括 Cordova JS(以及用于 ChildBrowser 插件的),它可以很好地在子浏览器中打开链接。
从远程网页加载 Cordova JS 时,我的测试 Cordova 2.7 应用似乎无法正确加载。
我尝试在嵌入式起始页和远程起始页上使用完全相同的 HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript" src="http://mydomain.com/mobile/cordova-2.7.0.js"></script>
</head>
<body>
<script>
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
alert("Ready!!");
}
</script>
</body>
</html>
为了测试这个作为嵌入的起始页,我把这行放在config.xml:
<content src="index.html" />
当我运行应用程序时,我会立即得到“Ready!”警告。
将此作为远程起始页进行测试(我的目标是链接到最终应用程序中的远程页面,我只是将其用作测试的起始页。结果是如果我从嵌入式页面链接,则相同。),我把这一行放在config.xml:
<content src="http://mydomain.com/mobile/index.php" />
当我运行应用程序时,我只是得到空白屏幕并且没有警报。
此外,在cordova-2.7.0.js L. 6255,我改变了
console.log('deviceready has not fired after 5 seconds.');
到
alert('deviceready has not fired after 5 seconds.');
进行该更改后,使用远程启动页面运行应用程序会导致空白页面,然后在 5 秒后,我收到警报“设备就绪在 5 秒后未触发。”。所以这告诉我 Cordova JS 没有正确启动。不用说,我无法让 InAppBrowser 在远程站点的子浏览器中启动链接,但我可以让它在嵌入的起始页上正常工作。
有人知道从这里去哪里吗?这是一个非常简单的示例,因此我假设这是 Cordova 设置问题或功能更改。感谢您的任何想法,谢谢!
【问题讨论】:
-
我刚刚用 Cordova 2.6 进行了测试,这个 2.6 的精确设置工作正常。 Cordova JS 在远程页面上工作。所以在 2.7 中改变了一些东西来打破这个。
-
这似乎与之前的版本有关,所以有点奇怪:issues.apache.org/jira/browse/CB-3029
标签: javascript ios cordova