首页 > 解决方案 > 在 url 更改或加载时执行

问题描述

我想在散列更改时执行一些 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会显示额外的数据)。

标签: jqueryhash

解决方案


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

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

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

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

那么这是不必要的

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

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

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


推荐阅读