在 url 更改或加载时执行

Posted

技术标签:

【中文标题】在 url 更改或加载时执行【英文标题】:Execute on url change or on load 【发布时间】:2018-10-08 05:05:25 【问题描述】:

我想在哈希值发生变化时执行一些 ajax 调用,同时也在初始页面加载时执行。

$(window).on('hashchange', function (e) 
     //execute this code
);
if (window.location.hash) 
  $(window).trigger('hashchange')

但这仅在 url domain.com#hash 中有哈希时才会执行。如果我加载纯 url domain.com 代码不会执行。

如何在有和没有哈希的两种可能性上执行此操作? (不带hash的url加载时,会显示一些数据。带ha会显示额外的数据)。

【问题讨论】:

【参考方案1】:

如果您希望它在页面加载后发生:

$(window).on('load', function () 
  $(window).trigger('hashchange');
);

或者如果您希望它立即发生(不是在加载后)

$(function() 
  $(window).trigger('hashchange');
);

那就没有必要了

if (window.location.hash) 
  $(window).trigger('hashchange')

您的代码仅在存在哈希 (window.location.hash) 时触发 hashchange,并且当存在哈希更改时您执行您的函数。

但是如果你想这样做,不管有没有哈希,都不需要检查它是否存在。

【讨论】:

非常感谢?

以上是关于在 url 更改或加载时执行的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 如何在不重新加载页面或使用 # 或的情况下更改浏览器地址栏中的 URL?

如何通过 URL 更改而不是页面重定向进行 ajax 加载?

每当页面重新加载或URL更改发生时,每次都会调用typescript文件

带参数的 routerLink 正在更改 URL 但不导航或重新加载组件

如何在不重新加载页面的情况下更改页面 url

更改 url 并更新页面内容而无需重新加载