在 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 更改或加载时执行的主要内容,如果未能解决你的问题,请参考以下文章

React 不会在路由参数更改或查询更改时重新加载组件数据

EXTJS 组合框甚至更改页面加载时执行的代码

仅在冷启动或设置更改时重新加载表数据

Wicket:刷新浏览器时未加载对 HTML 或 Java 源的更改

Datagridview 在更改列组合框值时执行代码

如何在ItemsControl生成其容器之前或之后更改加载的主题资源字典,但在那时不更改?