1
如果我建立了到该网站另一部分的链接,例如检测是否从同一网站打开一个窗口
<a href="foo.html" target="_blank">Link</a>
我希望能够在新的窗口告诉用户是否通过该链接过来,或者如果他们通过不同的途径直接到该网址。那可能吗?
这是因为,如果它们来自同一个网站,我可以使用window.close();
,但如果它们是通过不同的路线来传递的,则不会。
如果我建立了到该网站另一部分的链接,例如检测是否从同一网站打开一个窗口
<a href="foo.html" target="_blank">Link</a>
我希望能够在新的窗口告诉用户是否通过该链接过来,或者如果他们通过不同的途径直接到该网址。那可能吗?
这是因为,如果它们来自同一个网站,我可以使用window.close();
,但如果它们是通过不同的路线来传递的,则不会。
在这种情况下,你可以使用document.referrer
:
if(document.referrer){
// close the window here
console.log('loaded via navigation')
}else{
console.log('no navigation');
}
,或者你可能想从指引送域名:
function virtualURL(url) {
var a=document.createElement('a');
a.href=url;
return a.hostname;
}
if(virtualURL(document.referrer) === window.location.hostname){
// close the window here
console.log('loaded via navigation')
}else{
console.log('nope');
}
在这里,在上面的代码virtualURL(document.referrer)
将返回的主机名上次访问的页面。因此,您可以将它与当前应用程序的主机名匹配,如果它们匹配,则可以关闭该窗口。
完美!我正在寻找各种替代解决方案,例如将变量从父项传递给它的子项。谢谢:) –
这可能是另一种解决方案。并欢迎您。 – Jai