我目前正在构建一个离子应用程序,它将成为外部Web应用程序的包装器。我想要做的是能够跟踪当用户更改外部Web应用程序中的位置时重定向到的URL。
在我的主控制器中,我有以下代码。
app.controller('MainCtrl', function ($rootScope) {
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
// Now safe to use the Codova API
var url = "https://external-site/";
var target = "_self";
var options = "location=no";
var ref = cordova.InAppBrowser.open(url, target, options);
ref.addEventListener('loadstart', function () {
console.log("loadstart");
});
}
});
当页面加载时,我没有触发事件监听器或用户更改外部站点中的位置。我已经尝试将目标指向_system和_blank,这对我没什么影响。
有人能帮助我吗?
提前致谢。
答案 0 :(得分:0)
根据我的经验,所有事件并不总是在所有平台上发生。尝试订阅所有事件并打印一些调试信息。然后在不同的设备上测试(iOS,android)并查看触发的事件。
$rootScope.$on('$cordovaInAppBrowser:loadstart', function(e, event){console.log('start')};
$rootScope.$on('$cordovaInAppBrowser:loadstop', function(e, event){console.log('stop')});
$rootScope.$on('$cordovaInAppBrowser:loaderror', function(e, event){console.log('err')});
$rootScope.$on('$cordovaInAppBrowser:exit', function(e, event){console.log('exit')});
btw:我在这里使用ngCordova ......
答案 1 :(得分:0)
非常奇怪..我所做的只是更新离子,运行'离子启动测试空白'将插件修改app.js添加到此
angular.module('starter', ['ionic'])
.run(function ($ionicPlatform) {
$ionicPlatform.ready(function () {
if (window.cordova && window.cordova.plugins.Keyboard) {
var inAppBrowserRef;
var target = "_self";
var options = "location=no";
inAppBrowserRef = cordova.InAppBrowser.open('https://onesignal.com/', target, options);
inAppBrowserRef.addEventListener('loadstart', function () { console.log('start') });
inAppBrowserRef.addEventListener('loadstop', function () { console.log('stop') });
inAppBrowserRef.addEventListener('loaderror', function () { console.log('err') });
}
});
})
然后运行'离子运行android'并且所有事件都会触发。