我的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. 网站设置页面上的SharePoint自定义操作页面
- 2. WordPress的自定义特定的网站
- 3. MOSS自定义MasterPage不在所有网站页面上显示
- 4. 在ASP.Net网站上实现自定义错误页面
- 5. 在特定页面上禁用Javascript执行(HTML/PHP)
- 6. Github项目页面与Github页面的网站自定义域
- 7. jquery不能在自定义路由的页面上执行
- 8. 在特定页面而不是整个网站上应用https
- 9. 特定的RewriteCond自定义403页面
- 10. 自定义网址页面
- 11. 在特定网站上嵌入自定义样式表/ JS
- 12. 在htaccess中为特定网址设置自定义404页面
- 13. 在加载的特定页面上执行一个函数
- 14. wp_list_pages - 显示来自特定WordPress网站(网络)的页面
- 15. 将网站URL表单重定向到特定页面
- 16. IIS 7将默认网站重定向到自定义页面
- 17. 在多个html页面上执行的单个.js文件
- 18. 在default.aspx中访问网站定义列表的自定义属性页面
- 19. Hexo分页在自定义页面上
- 20. Firefox插件在指定页面上执行Javascript?
- 21. SharePoint - 确定网站创建的自定义网站模板从
- 22. 我可以将文件从自定义网站表单上传到Dropbox吗?
- 23. 为自定义控件定义可执行文件的路径
- 24. 单个页面上的ASP .NET多个自定义验证器
- 25. 仅在特定页面上更改CSS(非WordPress网站)
- 26. WooCommerce - 在Thankyou订单上自定义“Total”文本收到页面
- 27. JavaScript文件未加载在Django自定义管理页面
- 28. 定制禁令页面自制网站
- 29. WordPress的MU特定的儿童网站的自定义php文件
- 30. 如何在单个页面上添加自定义字段
你写的是正确的,但我不同意你的建议:浏览器缓存的单个JS文件通常比服务器和用户的性能更好,比每个页面提供的自定义JS更好。 – Phrogz 2011-02-05 04:11:38
我想这是真的,特别是如果您的网站使用大量的JS,但如果这只是JS的一小部分,并且没有“全局”JS文件,服务器端检测通常是更好的选择。我猜zmol在他的问题中暗示他有一个全球性的JS文件,所以你的建议可能会更好。 – jhartz 2011-02-05 04:41:34