2011-02-05 73 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文件中看起来倒退了。

相关问题