2011-02-05 50 views

回答

9

您可以使用window.location對象獲取有關位置的屬性。一些顯着的特性是:

  • window.location.href - 返回當前頁面的完整URL
  • window.location.hostname - 只返回主機名(域名,包括任何子域)
    • 例如:www.google.com
  • window.location.pathname - 「?」只返回路徑(以下部分主機名/域名,但不包括查詢字符串(URL的一部分,與一開始)或哈希(URL的一部分,一些由 「#」 開頭))
    • 例如:/subdir/subpage.html

雖然這一切運作良好,我會建議(如其他有人提到)做這個服務器端會更好。服務器通常可以做得比客戶更好。另外,如果你將所有的JS代碼放在一箇中心文件中,你可以直接在頁面上(服務器端)添加類似的東西來觸發一個事件,這個頁面可能比JS更可靠。位置嗅探:

<script type="text/javascript"> 
// jQuery example 
$(document).ready(function() { 
    // Run function that is specific for this page 
    MyNamespace.initHome(); 
}); 
</script> 
+1

你寫的是正確的,但我不同意你的建議:瀏覽器緩存的單個JS文件通常比服務器和用戶的性能更好,比每個頁面提供的自定義JS更好。 – Phrogz 2011-02-05 04:11:38

+1

我想這是真的,特別是如果您的網站使用大量的JS,但如果這只是JS的一小部分,並且沒有「全局」JS文件,服務器端檢測通常是更好的選擇。我猜zmol在他的問題中暗示他有一個全球性的JS文件,所以你的建議可能會更好。 – jhartz 2011-02-05 04:41:34

0

您的JavaScript可以使用window.location獲取當前的URL。

alert(window.location); 
2

我覺得這可能是一個更好的主意,這出在服務器端,並調用正確的函數/加載根據頁面上的正確的腳本。無論如何,服務器端通常會更好地瞭解當前頁面的內容。

2

可能閱讀網址as ClosureCowboy said,但那是倒退。通常,如果您知道不需要JavaScript文件,則不會將其包含在頁面中。

5

把每個頁面的<body>元素上的獨特id屬性,並用它來確定您的JS應該做的事情。這是我與我的一個縮小的文件,(一旦它加到許多小JS文件)基本上是這樣:

jQuery(function($){ 
    if (!$('body#home').length) return; 
    //... code specific to the home page 
}); 

jQuery(function($){ 
    if (!$('body#contact').length) return; 
    //... code specific to the contact page 
}); 

// etc. for each page 

但是你可以很容易地編寫一個更高效的單個文件爲:

jQuery(function($){ 
    if ($('body#home').length){ 
    //... code specific to the home page 
    } 
    if ($('body#contact').length){ 
    //... code specific to the contact page 
    } 
}); 
1

這是我用來爲每個頁面設置一個獨特的cookie的一小段代碼。它應該很好地得到你想要的東西。您可以通過開關運行它以針對不同的頁面生成不同的操作,或者僅使用簡單的if語句在主頁上運行代碼。

var sPath = window.location.pathname; 
var sPage = sPath.substring(sPath.lastIndexOf('/') + 1); 
console.log(sPath); 

我添加了console.log,以便您可以在Firebug控制檯中看到它調用的頁面。如果您希望它彈出,請將其更改爲提醒。

2

將您所有的JS代碼在一個文件中,讓它加載在每一頁上(反正緩存),但這裏的漁獲:

ONLY呼叫你需要它們頁面需要功能

試圖把「我在什麼頁面」的邏輯在JS文件中看起來倒退了。

相關問題