获取InAppBrowser的URL

时间:2013-07-30 15:59:27

标签: cordova

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

为exit事件添加eventlistener似乎不会返回URL。

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

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

使用PhoneGap 2.8.0

4 个答案:

答案 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); });