为什么Cordova 2.7.0 JS似乎不再适用于远程页面?

Cha*_*naz 10 javascript ios cordova

背景

我正在尝试将基于Cordova 2.0 构建的iOS应用程序升级到2.7版.

它基本上是一个欢迎屏幕,指向一个远程搜索引擎(请保留关于应用程序有效性和可能的​​批准的评论,因为我们已经过去),我们使用ChildBrowser插件在子浏览器中启用打开链接,以便不将用户捕获在Cordova webview中.

Cordova 2.7有一个名为InAppBrowser的功能我希望使用而不是ChildBrowser.除了缺少在Safari中打开的按钮之外,InAppBrowser基本上做同样的事情.

问题

现有应用程序的远程网页包括Cordova JS(以及ChildBrowser插件的网页),它可以在子浏览器中打开链接.

我的测试Cordova 2.7应用程序在从远程网页加载时似乎没有正确加载Cordova JS.

我尝试在嵌入式启动页面和远程启动页面上使用这个完全相同的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>
Run Code Online (Sandbox Code Playgroud)

要将此测试作为嵌入式起始页面,我将此行放入config.xml:

<content src="index.html" />
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,我立即得到"准备好了!" 警报.

要将其作为远程启动页面进行测试(我的目标是链接到最终应用程序中的远程页面,我只是将其用作测试的起始页面.如果我从嵌入页面链接,结果是相同的.) ,我把这一行放入config.xml:

<content src="http://mydomain.com/mobile/index.php" />
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,我只是得到空白屏幕而没有警报.

此外,在cordova-2.7.0.jsL. 6255中,我改变了

console.log('deviceready has not fired after 5 seconds.');
Run Code Online (Sandbox Code Playgroud)

alert('deviceready has not fired after 5 seconds.');
Run Code Online (Sandbox Code Playgroud)

通过该更改,使用远程启动页面运行应用程序会导致空白页面,然后在五秒钟后,我收到警报"设备已经在5秒后未启动".所以这告诉我Cordova JS没有正确启动.毋庸置疑,我无法让InAppBrowser在远程站点的子浏览器中启动链接,但我可以在嵌入式启动页面上正常工作.

任何人都有从这里去哪里的想法?这是一个非常简单的例子,所以我假设这是Cordova设置问题或功能的变化.我很感激任何想法,谢谢!

Sha*_*ron 10

是的,与我们的cordova-cli工作有关的事情在2.7中爆发了.请参阅:https://issues.apache.org/jira/browse/CB-3029

修复是在根文件夹中添加一个名为"cordova_plugins.json"的空文件.