我的js文件在所有頁面上加載。有些功能只能在某些頁面上運行,例如只有主頁http://site.com
。 JavaScript可以讀取它被調用的頁面的URL,以確定它是否是首頁?從單個文件在網站的特定頁面上執行自定義JavaScript
7
A
回答
9
您可以使用window.location對象獲取有關位置的屬性。一些顯着的特性是:
window.location.href
- 返回當前頁面的完整URLwindow.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>
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文件中看起來倒退了。
相關問題
- 1. 在網站上打開特定頁面
- 2. 網站設置頁面上的SharePoint自定義操作頁面
- 3. 網站沒有加載特定頁面上的css文件
- 4. WordPress的自定義特定的網站
- 5. 只在特定頁面上運行javascript
- 6. asp.net在網站上自定義控件
- 7. 正確的「Rails」方式在特定頁面上執行javascript
- 8. MOSS自定義MasterPage不在所有網站頁面上顯示
- 9. 在ASP.Net網站上實現自定義錯誤頁面
- 10. 在特定頁面上運行特定的JavaScript/jQuery功能
- 11. Github項目頁面與Github頁面的網站自定義域
- 12. 在特定頁面上禁用Javascript執行(HTML/PHP)
- 13. jquery不能在自定義路由的頁面上執行
- 14. 在特定頁面而不是整個網站上應用https
- 15. 特定的RewriteCond自定義403頁面
- 16. 自定義網址頁面
- 17. 自定義頁面網址
- 18. 在特定網站上嵌入自定義樣式表/ JS
- 19. 在htaccess中爲特定網址設置自定義404頁面
- 20. 在加載的特定頁面上執行一個函數
- 21. 選擇從網站頁面的特定文本
- 22. 只在特定頁面上的WP自定義註釋字段
- 23. wp_list_pages - 顯示來自特定WordPress網站(網絡)的頁面
- 24. 在自定義全局上下文中執行任意的javascript
- 25. 將網站URL表單重定向到特定頁面
- 26. IIS 7將默認網站重定向到自定義頁面
- 27. 在多個html頁面上執行的單個.js文件
- 28. 自定義PHP網站的分頁
- 29. 在default.aspx中訪問網站定義列表的自定義屬性頁面
- 30. Hexo分頁在自定義頁面上
你寫的是正確的,但我不同意你的建議:瀏覽器緩存的單個JS文件通常比服務器和用戶的性能更好,比每個頁面提供的自定義JS更好。 – Phrogz 2011-02-05 04:11:38
我想這是真的,特別是如果您的網站使用大量的JS,但如果這只是JS的一小部分,並且沒有「全局」JS文件,服務器端檢測通常是更好的選擇。我猜zmol在他的問題中暗示他有一個全球性的JS文件,所以你的建議可能會更好。 – jhartz 2011-02-05 04:41:34