【问题标题】:Cordova InAppBrowser: close inappbrowser instance from script injectedCordova InAppBrowser:从注入的脚本中关闭 inappbrowser 实例
【发布时间】:2014-12-31 12:44:29
【问题描述】:

我正在尝试从注入的脚本中关闭 inappbrowser 实例。
这是我尝试过的代码。

    ref = window.open(tile.typeContentUrl_en, '_blank', 'location=no');
    ref.addEventListener('loadstop', function(data, err) {
      ref.executeScript( {
        code: 'document.getElementsByTagName("body")[0].addEventListener("click", function(){ alert("clicked");ref.close() });'
      }, function(){
        console.log('script injected');
      });
    });

我在 inappbrowser 实例中未定义 ref

【问题讨论】:

    标签: cordova inappbrowser


    【解决方案1】:

    ref 是在cordova webview 上定义的,但是inAppBrowser 有它自己的webview,ref 没有在那里定义,所以你不能像那样关闭inAppBrowser

    我没有对此进行测试,这有点骇人听闻,但可能会起作用:

        ref = window.open(tile.typeContentUrl_en, '_blank', 'location=no');
        ref.addEventListener('loadstop', function(data, err) {
          ref.executeScript( {
            code: 'document.getElementsByTagName("body")[0].addEventListener("click", function(){ alert("clicked");window.location.href = "close"; });'
          }, function(){
            console.log('script injected');
          });
        });
    
        ref.addEventListener('loadstart', function(event) {
            if(event.url.indexOf("close") > -1) {
                ref.close();
            }
        });
    

    【讨论】:

    • 我检查了这个但我不知道 loadstart 回调是如何没有被调用的。有什么想法吗?
    • 我刚刚对其进行了测试,它可以工作,但我不得不更改 loadstart 上的 if,因为 window.location.href = "close";重定向到当前页面/close,而不是一个只有close作为url的空页面,所以检查页面是否在url上包含close
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多