定义用户代理我用从科尔多瓦InAppBrowser插件,我想从我的应用程序(的Android,iOS的)打开网页。但是,网站应该知道用户是通过移动浏览器还是通过我的应用程序进入的。上InAppBrowser从科尔多瓦
我虽然从我的应用程序更改用户代理将能够工作。有没有类似的解决方案?
我想就在我打开一个新窗口之前,我应该定义用户通过我的应用程序进入了网站 。
window.open("http://test.example.com", "_blank", "location=no");
定义用户代理我用从科尔多瓦InAppBrowser插件,我想从我的应用程序(的Android,iOS的)打开网页。但是,网站应该知道用户是通过移动浏览器还是通过我的应用程序进入的。上InAppBrowser从科尔多瓦
我虽然从我的应用程序更改用户代理将能够工作。有没有类似的解决方案?
我想就在我打开一个新窗口之前,我应该定义用户通过我的应用程序进入了网站 。
window.open("http://test.example.com", "_blank", "location=no");
当然,你可以这样做:
window.open("http://test.example.com?entry=app","_blank","location=no");
// see how we added ?entry=app query string?
,然后在某处的网页,你是开放的JavaScript,只是解析出“进入”参数,做任何具体的你的事想根据入门的价值来做。
如果你想在多个页面上使用这个逻辑,你可能需要设置一些cookie或其他东西,因为如果他们点击InAppBrowser中的链接,它将丢失?entry=app
查询字符串。
我想你可以尝试在每次点击InAppBrowser中的新链接时使用addEventListener("loadstart",fn)
来覆盖URL。这样,每次用户点击一个新页面时,函数fn
就会被调用,在这里您可以重写URL。它可能是这样的:
var ref = window.open("http://test.example.com?entry=app", "_blank", "location=no");
ref.addEventListener("loadstart", IABcallback);
function IABcallback(event){
if(event.url.substr(event.url.search(/entry/, '')) === "entry=app"){
// This is a lazy check for "entry" paramater, you should use a library or something
console.log("already have entry=app query string");
}else{
// open a new window with the same URL but add ?entry=app
ref = window.open(event.url+"?entry=app", "_blank", "location=yes");
// reattach this event listener since it is a new window
ref.addEventListener("loadstart", IABcallback);
}
}
这工作“好吧。”主要的问题是,每次点击当前窗口顶部的链接时,它都会打开一个新的InAppBrowser窗口,使后退按钮无法使用。您可以尝试通过使用ref.close()
来关闭窗口然后重新打开它,但是我在解决此问题时遇到问题。我也尝试使用窗口的自定义名称(而不是“_blank”),但这也不起作用。所以,对不起,这是一个不完整的答案,但希望它可以给你一些想法。使用自定义查询字符串初始化加载应用程序可能会容易得多,然后记住您是通过localStorage或cookie等途径从InAppBrowser中获取的。
谢谢。我想过的是同样的事情,但我宁愿通过更改用户代理来实现(我认为它更像这样)。但是我发现用户代理有几个困难,并且添加这个参数绝对没有问题。它取决于你想打开的网页,在我的情况下,它是一个Jquery移动应用程序,所有的索引都在启动时加载(无需存储cookie)。 – 2013-05-08 10:29:24