2015-02-08 39 views
-1

是否可以使用window.location來檢查我是否在網站的homepahge/index上?檢查使用window.location的主頁

我目前使用檢查

window.location.href.indexOf("/category/something") 

url,但我怎麼能檢查網頁?它不包含任何細分。

注:我不知道主頁的網址是什麼,所以我不能例如使用URL名稱,如window.location.href.indexOf("myhomepage.html")

更新:我有唯一的線索是,主頁沒有網址細分。

+0

通過「homepage」你的意思是域的根? – isherwood 2015-02-08 13:52:54

+0

如果您對主頁的網址沒有任何瞭解,則無法通過檢查網址來測試您是否在瀏覽該網頁。 – Quentin 2015-02-08 13:54:16

+0

URL不一定代表服務器正在服務/調用的實際頁面/文件/操作。通常,您需要依靠應用程序代碼來提供這些信息(並可能將其暴露給客戶端)。 – haim770 2015-02-08 13:54:48

回答

1

許多網站的首頁,計算器包括,包含指向同一主頁的鏈接。

// browser url = http://example.com 
<a href="http://example.com"/>my site</a> 

如果您有訪問源,您可以識別該鏈接的服務器端

<a id="homepage" href="http://example.com"/>my site</a> 

因此,要檢查,如果你是在主頁上:

document.addEventListener('DOMContentLoaded', function(e) { 
    var link = document.querySelector('#homepage'); 
    if (link.href == window.location.href) { 
    //i'm on the homepage 
    } 
}) 

所以我剛剛看到你的更新問題。如果你知道有沒有網址段,不會window.location.pathname總是「/」

1

JavaScript只知道它是當前的上下文。它不知道在一個網站的層次結構中它是哪裏,所以不,你不知道主頁的URL是否在主頁上

1

如果你只是做了window.location並檢查了那裏的參數,if沒有頁面/路徑追加,url匹配的起源等,將不夠好檢測 - Idk,我從來沒有需要這樣做?這也可能適用於.NET和其他類型的HTML命名約定(即index.html和index.htm)。此外,如果有人改變了文檔根目錄,或主頁指針,你會或多或少知道(又名不關心),因爲window.location的,你可以檢查以下內容:

window.location 
Location {replace: function, assign: function, ancestorOrigins: DOMStringList, origin: "http://stackoverflow.com", hash: ""…}ancestorOrigins: DOMStringListassign: function() { [native code] }hash: ""host: "stackoverflow.com"hostname: "stackoverflow.com"href: "http://stackoverflow.com/"origin: "http://stackoverflow.com"pathname: "/"port: ""protocol: "http:"reload: function reload() { [native code] }replace: function() { [native code] }search: ""toString: function toString() { [native code] }valueOf: function valueOf() { [native code] }__proto__: Location 

具有path = '/'。這很好地表明瞭主頁的純粹性。

3

術語homepage本身是一個相當模糊的結構,而不是可識別的technically。根據您的屏幕大小,設備,憑據,瀏覽器,日期/時間,地理位置等,您可能會有幾個不同的着陸頁。

要確保您位於其中一個着陸頁上的唯一方法是在對域名的初始GET請求期間進行控制(例如,http://www.example.com)。

所以,如果你已經在頁面上,沒有真正的方法來知道你如何到達那裏,如果這是從該域提供的默認頁面,雖然有黑客可以嘗試獲得一般(雖然很容易出錯)的想法。

例如,你可以編譯的普通網頁的路徑列表:

var homepages = [ '/', 'index.html', 'index.htm', 'index.php', 'main.html', 'main.htm', 'homepage.html', 'index2.htm' ]; 

等等,然後比較所提供的window.location.pathname

if (homepages.indexOf(window.location.pathname) >= 0) { 
    // we might be on a "homepage" 
} 
+0

感謝您的回答。我認爲一個非常明顯的線索是網址中沒有任何細分。 – CyberJunkie 2015-02-08 14:17:48

+0

是的,這是理想的情況,但有很多網站不遵循這個約定。這關乎你的用例。 – 2015-02-08 14:20:06