Cordova InAppbrowser插件无法在桌面网络浏览器

时间:2015-10-06 14:00:23

标签: cordova cordova-plugins intel-xdk

我正在开发混合应用程序。在我的应用程序中,我尝试使用Oauth2身份验证来集成API。因此,在我的移动版本中,我使用Cordova InAppBrowser插件并在移动设备中工作。我尝试使用相同的代码集来处理桌面Web浏览器,但 loadstart 不会触发事件,我尝试使用 load 事件好像在起作用。任何帮助。提前致谢。找到以下工作代码。

var url1 =" xxx&#34 ;;

var ref = cordova.InAppBrowser.open(url1,' _system',' location = yes');

    ref.addEventListener('loadstart', function(event) 
        {
         alert('start: ' + event.url);
         if((event.url).indexOf("http://localhost.com:8085/callback") == 0){
         alert('start: ' + event.url);
         var requestToken = (event.url).split("code=")[1];
         alert('Token: '+requestToken);
        ref.close(); 
         }
    });

在移动设备上运行的代码。

1 个答案:

答案 0 :(得分:1)

您应该使用功能检测来确定您是否在Cordova平台上,然后您可以采用if(browser) do this ; else if(cordova) do that方法。换句话说,编写条件代码,这样当您在Cordova平台上时,您可以使用在那里工作的inAppBrowser解决方案,当您在浏览器中时,使用最适合的解决方案。

您可以通过测试window.cordova对象的存在来检测您是否在Cordova webview中(即使您的项目中没有插件,它仍然存在于Cordova 3+ webview中)。所以你会做类似的事情:

if( window.cordova ) {
    inAppBrowser solution ;
} else {
    standard browser solution ;
}

为了超级安全,您还应该在测试中包含inAppBrowser的测试,以确定是否存在window.cordova - 因为JavaScript在部署时无法帮助您确保这一点,但是&#39只是我的意见。 :)