Javascript Cordova应用程序(iOS)中的iframe history.back()问题
我正在使用Cordova开发Android和iOS的应用程序 页面结构如下所示。Javascript Cordova应用程序(iOS)中的iframe history.back()问题,javascript,ios,cordova,iframe,Javascript,Ios,Cordova,Iframe,我正在使用Cordova开发Android和iOS的应用程序 页面结构如下所示。 -A页(不带iframe) -B页(带框架) 过渡 1.第A页-->第B页(前进) 2.第A页首先,iOS中的iFrame共享它们的历史。 其次,iOS中的Cordova使用iframe作为JsToNativeBridge 因此,在应用程序中,有两个iFrame。 一个用于显示您的页面。 另一个用于JsToNativeBridge。(此iframe已隐藏) history.back的功能与这两个iframe冲突 一
-A页(不带iframe)
-B页(带框架) 过渡
1.第A页-->第B页(前进)
2.第A页首先,iOS中的iFrame共享它们的历史。 其次,iOS中的Cordova使用iframe作为JsToNativeBridge 因此,在应用程序中,有两个iFrame。 一个用于显示您的页面。 另一个用于JsToNativeBridge。(此iframe已隐藏) history.back的功能与这两个iframe冲突 一个解决方案如下 在deviceready事件之后,在任何插件工作之前,执行该命令
var exec = cordova.require('cordova/exec');
exec.setJsToNativeBridgeMode(exec.jsToNativeModes.XHR_OPTIONAL_PAYLOAD);
备注:有些插件将addEventlistener用于deviceready事件。如果你用这样的
插件,请尝试下一个解决方案
另一个解决方案是在iOS中修改cordova.js
之前:
if (bridgeMode === undefined) {
bridgeMode = jsToNativeModes.IFRAME_NAV;
}
之后:
if (bridgeMode === undefined) {
bridgeMode = jsToNativeModes.XHR_NO_PAYLOAD;
// bridgeMode = jsToNativeModes.IFRAME_NAV;
}
我也有同样的问题,对我有效的解决方案是一个简单的技巧。替换:
<a data-rel="back" data-icon="back">back</a>
by
<a data-id="persistent" href="the page_before" data-transition="slide" data-icon="back"> back</a>
它工作得很好首先:请不要将您的问题拉到cordova的开发者邮件列表上,这只是为了开发cordova。你为什么用iFrames?谢谢你Joerg。对不起,我犯了一个错误。使用iframe的一个原因是客户需求。当然,我们提出了应用浏览器。然而,由于以下原因,它被拒绝。1.不显示网站URL。2.使用iOS时,必须能够返回到上一页。Cordova不建议使用iframe吗?