检测是否从同一网站打开了一个窗口

时间:2016-02-26 10:57:48

标签: javascript html

如果我链接到网站的其他部分,例如

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

我希望能够在新窗口中告诉用户是通过该链接来的,还是通过不同的路径直接访问该网址。这可能吗?

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

1 个答案:

答案 0 :(得分: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)将返回上次访问过的网页的主机名。因此,您可以将其与当前应用程序的主机名匹配,如果它们匹配,则可以关闭窗口。