【问题标题】:window.onload to determine what code to run depending on page valuewindow.onload 根据页面值确定要运行的代码
【发布时间】:2015-03-13 11:03:03
【问题描述】:

我通过单个外部 .js 文件在整个网站中使用 window.onload 函数,并且我通常会检查我在哪个页面上,以便运行某些语句,例如:

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.pathnamedocument.URL 是我将要测试的好方法。太棒了!

编辑 2:

我发现了一些很酷的东西,我想我会在这里发布,下面是路径中的最后一页。

page = location.pathname.split('/').pop();
console.log(page);

【问题讨论】:

  • 您可以使用document.title,前提是您在所有 html 文件中进行了适当的设置。

标签: javascript html


【解决方案1】:

你可以使用:

location.pathname

它返回域后 url 中的所有内容。例如,对于此页面,它是: /questions/27956897/window-onload-to-determine-what-c​​ode-to-run-depending-on-page-value

它确实包含查询字符串(如果存在)。 如果您只想要最后一个正斜杠后面的内容,这篇文章中讨论了这一点:Get value of a string after a slash in JavaScript,如果您不关心路径的其余部分而只想提取文件名,这将起作用。

【讨论】:

  • 这很好,因为我可能在不同的目录中有同名的页面,例如:/update/client.php 和 /view/client.php... 我也不需要添加任何东西到 .html 文件。
【解决方案2】:

我使用了您展示的最后一个选项,这似乎是一个很好的解决方案。在页面开头设置变量并检查其值很容易。我认为与其给出确切的页面名称,不如选择一些有意义的东西,比如“介绍页”或“销售页”,这样以后会更容易破译。

<script type="text/javascript">
var curPage = 'intropage';
</script>

如果您不想设置 id 或变量,可以使用的另一种方法是检查 location.pathnamelocation.href 以获取当前位置并采取必要的步骤。

【讨论】:

    【解决方案3】:

    您可以尝试使用给定页面名称本身没有任何隐藏字段的 RegExp:

    var url = window.location.pathname;
    if(url.match('index.html')) {
        //to do
    } else if(url.match('about.html')) {
        //to do
    } else {
        //to do
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      相关资源
      最近更新 更多