使用InAppBrowser我希望在他选择关闭InAppBrowser时获取用户当前所在站点的URL。
为exit事件添加eventlistener似乎不会返回URL。
我首先想到的解决方法是订阅loadstart事件,并从那里获取URL,因此总是拥有“最新”的URL。但是,当用户按下后退按钮时,并不总是触发。
任何想法如何解决这个问题?
使用PhoneGap 2.8.0
答案 0 :(得分:4)
使用3.1非常简单
你只需在加载开始时添加一个事件。或加载停止。
var ref = window.open('http://apache.org', '_blank', 'location=yes');
ref.addEventListener('loadstart', function() { alert(event.url); });
请参阅cordova文档以获取更多信息Cordova docs
答案 1 :(得分:1)
在angularjs中获取浏览器InAppBrowser的URL,Ionic
您可以使用浏览器的事件处理(InAppBrowser)获取Opened窗口视图(浏览器)的URL
作为示例,我们调用了一个推特页面,每当页面更改网址时,它都会显示网址警告:
var twitterWindow = window.open("https://twitter.com/", '_blank', 'location=no');
twitterWindow.addEventListener('loadstart', function(event) {
alert("Current Event : "+ event.url);
});
这里我们使用" addEventListener"用于处理浏览器事件。
window.open('local-url.html');
// loads in the Cordova WebView
window.open('local-url.html', '_self');
// loads in the Cordova webView
window.open('local-url.html', '_system');
// Security error: system browser, but url will not load (iOS)
window.open('local-url.html', '_blank');
// loads in the InAppBrowser
window.open('local-url.html', 'random_string');
// loads in the InAppBrowser
window.open('local-url.html', 'random_string', 'location=no');
// loads in the InAppBrowser, no location bar
要处理我们可以使用的浏览器事件:
var ref = window.open('http://whitelisted-url.com', '_blank');
ref.addEventListener('loadstart', function(event) { alert(event.type + ' - ' + event.url); } );
ref.addEventListener('loadstop', function(event) { alert(event.type + ' - ' + event.url); } );
ref.addEventListener('loaderror', function(event) { alert(event.type + ' - ' + event.url + ' - ' + event.code + ' - ' + event.message); } );
ref.addEventListener('exit', function(event) { alert(event.type); } );
并关闭InAppBrowser:
var ref = window.open('http://whitelisted-url.com', '_blank');
ref.close();
答案 2 :(得分:1)
InAppBrowser
退出不返回网址的事件。
要捕获URL,您需要收听loadstart
个事件。
这是一个适合我的例子:
//Open InAppBrowser on selected URL
browser = this.inAppBrowser.create(initialURL, '_blank', 'location=yes');
//WARNING: Events will only fire in the app, not if running in a browser
//Every time a page is opened in the InAppBrowser, store the URL
if (browser.on('loadstart').subscribe)
browser.on('loadstart').subscribe((e: InAppBrowserEvent) => {
if (e && e.url)
url = e.url;
});
//When the InAppBrowser is closed, check and use the last viewed URL
if (browser.on('exit').subscribe)
browser.on('exit').subscribe((e: InAppBrowserEvent) => {
if (url)
...use the last viewed URL...;
});

答案 3 :(得分:0)
只是为了完成Leo的回答:如果将event
对象作为loadstart
函数的参数传递,一切正常。
ref.addEventListener('loadstart', function(event) { alert(event.url); });