当然,你可以这样做:
window.open("http://test.example.com?entry=app","_blank","location=no");
// see how we added ?entry=app query string?
然后在您打开的网页的 JavaScript 中某处,只需解析“entry”参数并根据 entry 的值做任何您想做的特定事情。
如果您想在多个页面上使用此逻辑,您可能需要设置一些 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 可能会容易得多。