2016-02-26 98 views
1

如果我建立了到该网站另一部分的链接,例如检测是否从同一网站打开一个窗口

<a href="foo.html" target="_blank">Link</a> 

我希望能够在新的窗口告诉用户是否通过该链接过来,或者如果他们通过不同的途径直接到该网址。那可能吗?

这是因为,如果它们来自同一个网站,我可以使用window.close();,但如果它们是通过不同的路线来传递的,则不会。

回答

2

在这种情况下,你可以使用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)将返回的主机名上次访问的页面。因此,您可以将它与当前应用程序的主机名匹配,如果它们匹配,则可以关闭该窗口。

+0

完美!我正在寻找各种替代解决方案,例如将变量从父项传递给它的子项。谢谢:) –

+0

这可能是另一种解决方案。并欢迎您。 – Jai

相关问题