Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Cordova应用程序(iOS)中的iframe history.back()问题_Javascript_Ios_Cordova_Iframe - Fatal编程技术网

Javascript Cordova应用程序(iOS)中的iframe history.back()问题

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冲突 一

我正在使用Cordova开发Android和iOS的应用程序

页面结构如下所示。
-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吗?