检查 inappbrowser 是打开还是关闭

Check if inappbrowser open or closed

在我的 cordova 应用程序中,我通过以下代码在 inappbrowser 中打开(使用 InAppBrowser 插件)一个网页。

var ref = cordova.InAppBrowser.open('http://apache.org', '_blank', 'location=yes');
ref.close();

现在我想在 ref.isClosed() 这样的 js 中检查 InAppBrowser 是否关闭(不是特定的 URL 我想检查浏览器本身是打开还是关闭)。但 InAppBrowser 不支持此类功能。有什么办法可以找到吗?

您可以只创建一个简单的包装器来跟踪它是打开还是关闭,例如:

var iab_controller = (function(){
    var ref, isOpen = false;

    return {
        open: function(url){
            ref = cordova.InAppBrowser.open(url, '_blank', 'location=yes');
            isOpen = true;
            return ref;
        },
        close: function(){
            if(isOpen){
                ref.close();
                ref = null;
                isOpen = false;
            }
        },
        isOpen: function(){
            return isOpen;
        },
        isClosed: function(){
            return !isOpen;
        }
    };

})();

console.log("isOpen: " + iab_controller.isOpen())
console.log("isClosed: " + iab_controller.isClosed())

iab_controller.open('http://apache.org');

console.log("isOpen: " + iab_controller.isOpen())
console.log("isClosed: " + iab_controller.isClosed())

iab_controller.close();

console.log("isOpen: " + iab_controller.isOpen())
console.log("isClosed: " + iab_controller.isClosed())
var browserRef = cordova.InAppBrowser.open('http://apache.org', '_blank', 'location=yes');
var isOpen = true;

browserRef.addEventListener('exit', function(event) {
  console.log('exit: event fires when the InAppBrowser window is closed.');
  isOpen = false;
});

为来自 InAppBrowser 的退出事件添加侦听器。这将允许您执行逻辑或设置变量来管理状态。

https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-inappbrowser/#inappbrowseraddeventlistener