0

基本上,如果 URL/window.location绝对包含任何变量(当然是过去的 domain.com/),我希望 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;
    }
});
4

3 回答 3

3

请参阅最后更新您的说明

将脚本放在页面末尾,就在关闭之前</body>,并且:

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

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

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

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

如果“变量”是指资源名称,例如 not http://domain.combut http://domain.com/page,则:

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

更多关于 MDN上的 location 对象。


重新澄清:

编辑:抱歉,澄清一下,变量是指以下任何一个示例:

这些例子归结为有一个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>
于 2013-01-25T07:31:44.800 回答
2

您可以检查是否有 a hash、 apathname或 a search

或者,为了简化,你可以简单地使用这个:

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

window.location.href只是整个 URL。如果域后面有东西,它会显示出来。

此功能将在以下情况下触发:

  • domain.com/some/path
  • domain.com/#hash
  • domain.com/?some=变量
于 2013-01-25T07:36:58.377 回答
0

您可以检查是否将search属性window.location设置为某个值。此外,您可以检查hash属性:

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

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

<script type='text/javascript'>
  document.onload = function () {
    if (window.location.search || window.location.hash) {
      yourfunctionhere();
    }
  }
</script>
于 2013-01-25T07:32:39.680 回答