使用 InAppBrowser,当用户选择关闭 InAppBrowser 时,我希望获取用户当前所在站点的 URL。
为退出事件添加事件监听器似乎不会返回 URL。
我首先想到的解决方法是订阅 loadstart 事件,并从那里获取 URL,因此始终拥有“最新”的 URL。然而,当用户按下后退按钮时,这并不总是触发。
任何想法如何解决这个问题?
使用 PhoneGap 2.8.0
使用 InAppBrowser,当用户选择关闭 InAppBrowser 时,我希望获取用户当前所在站点的 URL。
为退出事件添加事件监听器似乎不会返回 URL。
我首先想到的解决方法是订阅 loadstart 事件,并从那里获取 URL,因此始终拥有“最新”的 URL。然而,当用户按下后退按钮时,这并不总是触发。
任何想法如何解决这个问题?
使用 PhoneGap 2.8.0
使用 3.1 相当简单
您只需在加载开始时添加一个事件。或负载停止。
var ref = window.open('http://apache.org', '_blank', 'location=yes');
ref.addEventListener('loadstart', function() { alert(event.url); });
有关更多信息,请参阅科尔多瓦文档科尔多瓦文档
InAppBrowser
退出不返回 URL 的事件。为了捕获 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...;
});
在angularjs,Ionic中获取浏览器InAppBrowser的URL
您可以使用浏览器的事件处理(InAppBrowser)获取打开的窗口视图(浏览器)的url
作为一个例子,我们正在调用一个 twitter 页面,每当页面更改 url 时,它都会显示带有 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();
只是为了完成 Leo 的回答:如果将event
对象作为参数传递给loadstart
函数,则一切正常。
ref.addEventListener('loadstart', function(event) { alert(event.url); });