2016-02-26 95 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

相關問題