2016-01-07 38 views
0

我正在使用Cordova的InAppBrowser插件(v1.1.1)进行OAuth登录过程。不幸的是,InAppBrowser似乎没有关闭浏览器。我的“closeBrowser”函​​数不断触发间隔,并且浏览器保持屏幕上的Android状态(我目前还没有试过其他设备。)InAppBrowser不关闭?

有没有办法强制关闭除.close()之外的InAppBrowser,或隐藏它?或者,也许我的代码中有一个缺陷,就是锁定浏览器。

LogInPage.prototype.handleExternalLogin = function (externalLogin) { 
    var _this = this; 

    var ref = window.open(Environment_1.settings.baseUrl + externalLogin.route.url, "_blank", "location=no"); 
    ref.addEventListener('loadstart', function (event) { 
     if (_.startsWith(event.url, Environment_1.settings.baseUrl + "/api/Account/account/ExternalLoginCallback")) { 
      // Now we want to load a different url that will give us the mobile access token 
      console.log('get external-mobile-token'); 
      _this.closeBrowser(ref); 

      var ref2 = window.open(Environment_1.settings.baseUrl + "/api/Account/external-mobile-token", "_blank" /*, "location=no"*/); 

      ref2.addEventListener('loadstop', function (event) { 
       console.log('loadstop ' + event.url); 
       if (event.url == Environment_1.settings.baseUrl + "/api/Account/external-mobile-token") { 
        ref2.executeScript({ code: 'window.document.documentElement.innerText' }, function (contents) { 
         _this.login(contents); 
         _this.closeBrowser(ref2); 
        }); 
       } 
      }); 

      ref2.addEventListener('loaderror', function (event) { 
       console.log(event); 
       _this.closeBrowser(ref2); 
       // TODO - do something? 
      }); 
     } 
    }); 

    ref.addEventListener('loaderror', function (event) { 
     console.log(event); 
     _this.closeBrowser(ref); 
     // TODO - do something? 
    }); 
}; 

LogInPage.prototype.closeBrowser = function (browser) { 
    var interval = setInterval(function() { 
     console.log('closing'); 
     browser.close(); 
    }, 10); 

    browser.addEventListener('exit', function() { 
     console.log('closed'); 
     clearInterval(interval); 
    }); 
}; 

LogInPage.prototype.login = function (token) { 
    console.log(token); 
}; 

上面的代码实际上是从TypeScript生成的,但我想我不会混淆这个问题。

回答

0

看起来,关闭InAppBrowser并同时打开另一个导致该问题;重写流程只需要一个窗口就可以解决我的问题。