我的js文件加载到所有页面上.某些功能仅适用于某些页面,例如仅限主页http://site.com.javascript可以读取它正在调用的页面的URL来确定它是否是主页?
您可以使用window.location对象获取有关该位置的属性.一些值得注意的属性是:
window.location.href - 返回当前页面的完整URL
window.location.hostname - 仅返回主机名(域名,包括任何子域)
window.location.pathname - 仅返回路径(主机名/域后面的部分,但不包括查询字符串(以"?"开头的URL的一部分)或散列(以"#"开头的URL的一部分))
虽然这一切都运行良好,但我建议(就像其他人提到的那样)做服务器端会更好.服务器通常可以比客户端做更好的事情.
此外,如果您将所有JS代码放在一个中央文件中,您可以直接向页面(在服务器上)添加这样的内容,以触发该页面的事件,这可能比JS位置嗅探更可靠:
<script type="text/javascript">
// jQuery example
$(document).ready(function () {
// Run function that is specific for this page
MyNamespace.initHome();
});
</script>
Run Code Online (Sandbox Code Playgroud)
id在<body>每个页面的元素上放置一个唯一的属性,并使用它来确定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
Run Code Online (Sandbox Code Playgroud)
但您可以轻松编写更高效的单个文件:
jQuery(function($){
if ($('body#home').length){
//... code specific to the home page
}
if ($('body#contact').length){
//... code specific to the contact page
}
});
Run Code Online (Sandbox Code Playgroud)