如果URL包含任何内容,则触发Javascript函数

时间:2013-01-25 07:27:35

标签: javascript jquery

基本上,如果网址/ window.location绝对包含任何变量(当然是过去的域名),我希望javascript能够执行某些操作。

目前,我有以下jQuery代码,只有当window.location包含确切的措辞“#hash”时才执行,但如前所述,我想扩展所有变量的功能。

修改:抱歉,澄清一下,变量我的意思是以下任何一个例子:

  • domain.com/的 #hash
  • domain.com/的#HASH2
  • domain.com/的子/文件夹
  • domain.com/的 textwithoutahash

此外,如果有人知道如何在基本的Javascript中执行此操作并且不需要jQuery库,那将是一个额外的好处!

$(function() {
    if ( window.location.href.indexOf('#hash') > -1 ) {
        myfunctionhere;
    }
});

3 个答案:

答案 0 :(得分:3)

请参阅最后更新您的澄清

将脚本放在页面末尾,就在结束</body>之前,然后:

如果“变量”是指文档片段标识符(“hash”),则:

<script>
if (location.hash) {
    callYourFunction();
}
</script>

如果“变量”是指查询字符串,那么

<script>
if (location.search) {
    callYourFunction();
}
</script>

如果“变量”是指资源名称,例如,不是http://domain.com而是http://domain.com/page,那么:

<script>
if (location.pathname && location.pathname !== "/") {
    callYourFunction();
}
</script>

有关位置对象on MDN的更多信息。


重申你的澄清:

  

编辑:对不起,澄清一下,变量我的意思是以下任何一个例子:

这些示例归结为hashpathname或两者都有,所以:

<script>
if ((location.pathname && location.pathname !== "/") || location.hash) {
    callYourFunction();
}
</script>

...当然,如果您还想处理http://domain.com?foo=bar,请同时添加search

<script>
if ((location.pathname && location.pathname !== "/") ||
    location.search ||
    location.hash) {

    callYourFunction();
}
</script>

答案 1 :(得分:2)

您可以检查是否有hashpathnamesearch

或者,为了简化,您可以简单地使用它:

if (window.location.href.split('/').filter(Boolean).length > 2) {
    callYourFunction();
}

window.location.href只是整个网址。如果域名后面有内容,则会显示。

以下情况将触发此功能:

  • domain.com/some/path
  • domain.com/#hash
  • domain.com/?some=variable

答案 2 :(得分:0)

您可以检查search的{​​{1}}属性是否设置为某事。此外,您可以查看window.location属性:

hash

要在没有jQuery的情况下调用它,只需将其包含在'onload'脚本中:

if (window.location.search || window.location.hash) {
  yourfunctionhere();
}