如何在Phonegap应用程序中关闭InAppBrowser本身?

Sha*_*shi 8 javascript cordova inappbrowser

我正在开发Phonegap应用程序,目前我正在使用InAppBrowser显示外部页面.在一些外部页面上,我放置了一个关闭按钮,我想关闭InAppBrowser本身.因为InAppBrowser显示这些页面,这就是为什么不能自己访问它的引用来关闭它,请不要建议我使用ChildBrowser插件.

window.close(); //Not Worked for me
or  
iabRef.close();  //Also not Worked for me because iabRef is not accessible on InAppBrowser. It is created on Parent Window
Run Code Online (Sandbox Code Playgroud)

一些Android设备和iOS设备显示一个完成按钮来关闭它.除了iPad还显示完成按钮.但在Android平板电脑的情况下,没有任何按钮可以关闭它.

更新: -

这是我的完整代码: -

var iabRef = null; 
function iabLoadStart(event) {
}
function iabLoadStop(event) {
}
function iabClose(event) { 
    iabRef.removeEventListener('loadstart', iabLoadStart);      
    iabRef.removeEventListener('loadstop', iabLoadStop); 
    iabRef.removeEventListener('exit', iabClose); 
}
function startInAppB() {
    var myURL=encodeURI('http://www.domain.com/some_path/mypage.html');
    iabRef = window.open(myURL,'_blank', 'location=yes');    
    iabRef.addEventListener('loadstart', iabLoadStart);
    iabRef.addEventListener('loadstop', iabLoadStop);
    iabRef.addEventListener('exit', iabClose);
}
Run Code Online (Sandbox Code Playgroud)

Tor*_*mon 7

这为我工作:

var win=window.open( "myurl", "_blank");
win.addEventListener( "loadstop", function(){
       var loop = window.setInterval(function(){
           win.executeScript({
                   code: "window.shouldClose"
               },
               function(values){
                   if(values[0]){
                     win.close();
                     window.clearInterval(loop);
                   }
               }
           );
       },100);
   });
Run Code Online (Sandbox Code Playgroud)

在调用的窗口中,只需执行以下操作:

window.shouldClose=true
Run Code Online (Sandbox Code Playgroud)

当您想关闭它时


jok*_*yme 6

这篇博客文章中提供了一个解决方案: 与cordova的inappbrowser进行跨窗口交流

实际上,您可以executeScript()反复使用从父窗口到InAppBrowser实例(例如,每秒一次或两次),以检查是否已设置IAB中的值.按下IAB中的"关闭"按钮可以设置这样的变量.

当父窗口发现已在IAB中设置了变量时,父窗口使用IAB引用close()它.


MIa*_*sca 5

这里有一篇SO帖子描述了如何做到这一点.

您基本上必须通过调用window.open并挂钩到loadstop事件来获取对inapp浏览器的引用.在loadstop事件中检查以查看url是否包含预定义路径(如mobile/close - 但可以是任何内容),然后调用call close.

这是帖子

/sf/answers/1118738071/