我在整个网站中使用window.onload函数,通过一个外部.js文件,我通常会检查我所在的页面,以便运行某些语句,例如:
window.onload = function() {
var curPage = document.getElementById('page').value;
if (curPage === "index.html") {
// do something here
}
if (curPage === "about.html") {
// do something else here
}
}
与' curPage'是每个html文档中输入的值
<input id="page" type="hidden" value="my-page.html" />
我看到人们在body元素中添加一个id来实现相同的效果,如下所示:
<body id="pageisIndex">
但是,我想知道是否有更好的方法来初始化/拉取HTML文档中的变量而不使用输入或元素ID。
会像......
<script type="text/javascript">
var curPage === 'index.html';
</script>
...还可以使用外部.js文件吗?正确?
修改
所提供的所有答案都非常好,我相信这是个人观点的时代之一;但是,使用 location.pathname 或 document.URL 是我要测试的好方法。真棒!
编辑2:
我发现一些非常酷的东西,我以为我会在这里发布,以下内容为我们提供了路径中的最后一页。
page = location.pathname.split('/').pop();
console.log(page);
答案 0 :(得分:1)
您可以尝试使用给定页面名称的RegExp,而不使用任何隐藏字段:
var url = window.location.pathname;
if(url.match('index.html')) {
//to do
} else if(url.match('about.html')) {
//to do
} else {
//to do
}
答案 1 :(得分:0)
您可以使用:
location.pathname
返回域后url中的所有内容。例如,对于此页面,它是: /问题/ 27956897 /窗口的onload到确定,哪些代码可以运行 - 根据上页值的
不包含查询字符串(如果存在)。 如果你想要的是最后一个正斜杠之后的内容,那么这篇文章中讨论了这个问题:Get value of a string after a slash in JavaScript,如果你不关心路径的其余部分但只是想提取文件名,那么它将起作用。
答案 2 :(得分:0)
我使用了你所展示的最后一个选项,这似乎是一个很好的解决方案。在页面开头设置变量并检查其值很容易。我认为不是给出确切的页面名称,而是选择有意义的内容,例如&#34; intropage&#34;或&#34; sellpage&#34;这将在以后更容易破译。
<script type="text/javascript">
var curPage = 'intropage';
</script>
如果您不想设置ID或变量,可以使用的另一种方法是检查 location.pathname 或 location.href 以获取当前的位置并采取必要的步骤。