我正在开发混合应用程序。在我的应用程序中,我尝试使用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();
}
});
在移动设备上运行的代码。
答案 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只是我的意见。 :)