7

使用 InAppBrowser,当用户选择关闭 InAppBrowser 时,我希望获取用户当前所在站点的 URL。

为退出事件添加事件监听器似乎不会返回 URL。

我首先想到的解决方法是订阅 loadstart 事件,并从那里获取 URL,因此始终拥有“最新”的 URL。然而,当用户按下后退按钮时,这并不总是触发。

任何想法如何解决这个问题?

使用 PhoneGap 2.8.0

4

4 回答 4

7

使用 3.1 相当简单

您只需在加载开始时添加一个事件。或负载停止。

 var ref = window.open('http://apache.org', '_blank', 'location=yes');
 ref.addEventListener('loadstart', function() { alert(event.url); });

有关更多信息,请参阅科尔多瓦文档科尔多瓦文档

于 2013-10-11T14:41:34.353 回答
3

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...;
	});

			

于 2017-11-04T07:32:12.310 回答
1

在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();
于 2016-02-24T11:28:12.170 回答
0

只是为了完成 Leo 的回答:如果将event对象作为参数传递给loadstart函数,则一切正常。

ref.addEventListener('loadstart', function(event) { alert(event.url); });
于 2016-03-13T19:41:19.290 回答