在iOS 6&amp ;;中查看更改后,Phonegap Build inAppBrowser事件不会触发7

时间:2014-07-22 11:45:24

标签: ios cordova inappbrowser

我正在使用PhoneGap Build 3.3.0版构建跨平台应用程序。该应用程序是一个新闻应用程序,因此需要在加载不同视图时更新DOM。每次发生这种情况时,旧页面将被删除并替换为新的视图渲染。该应用程序围绕backbone.js构建,使用jQuery和Twig呈现视图。

我正在使用inAppBrowser来处理指向外部网站的链接,并使用以下方法成功设置了这些链接:

<gap:plugin name="org.apache.cordova.inappbrowser" />
配置中的

的链接
<script src="phonegap.js"></script>
index.html文件中的

。然后我使用

启动inAppBroswer
window.open('myURL', '_blank', 'location=yes');

这在我第一次在会话中使用时工作正常。即使关闭了浏览器并且选择了同一视图上的另一个链接,浏览器仍然可以正常工作。

但是,在iOS 6+中,如果视图被另一个视图替换,则新视图中的链接不会触发。附加到链接的onclick事件肯定会触发(我可以通过使用警报来判断),但inAppBroswer无法打开。但是,如果我退出应用程序然后返回它,则inAppBroswer已打开。就好像失去对应用程序的关注会触发排队事件。

我已经通过在loadstart事件处理程序中放置一个警告来确认此行为,在退出应用程序并返回它之前不会触发此事。

我已经尝试保持对inAppBrowser的持久引用,并在关闭后销毁该实例。我也尝试在创建inAppBroswer实例后调用.show()方法,但这似乎没有任何区别。

这是其他人遇到过的问题吗?我找不到关于这个具体问题的另一个问题。这似乎只发生在iOS 6和7中,而不是Android中。

由于

1 个答案:

答案 0 :(得分:2)

似乎已经解决了这个问题,本文着眼于同一个问题(在不同的背景下):

https://issues.apache.org/jira/browse/CB-2102

出现的一个解决方案是使用iframe桥接模式。说明在这里:

https://groups.google.com/forum/#!msg/phonegap/iNl2M57xPEA/t2BW2kBXsbYJ

通过调用以下内容,我得到了它的工作:

var exec = cordova.require('cordova/exec');
exec.setJsToNativeBridgeMode(exec.jsToNativeModes.IFRAME_NAV);

在deviceready事件上,这现在解决了我的应用程序的问题。

希望这可以帮助任何有同样问题的人。