window.onload根据页面值确定要运行的代码

时间:2015-01-15 04:37:54

标签: javascript html

我在整个网站中使用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);

3 个答案:

答案 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 以获取当前的位置并采取必要的步骤。