javascript – On – window.location.hash – 更改?
作者:互联网
我正在使用Ajax和hash进行导航.
有没有办法检查window.location.hash是否改变了这样?
http://example.com/blah#123至http://example.com/blah#456
如果我在文档加载时检查它,它可以工作.
但是如果我有基于#hash的导航,那么当我按下浏览器上的后退按钮时它就不起作用了(所以我从#456跳到了#123).
它显示在地址框内,但我无法用JavaScript捕获它.
解决方法:
真正做到这一点的唯一方法(以及’reallysimplehistory’是如何做到的),是通过设置一个持续检查当前哈希的间隔,并将其与之前的哈希进行比较,我们这样做并让订阅者订阅更改如果哈希值发生变化我们会触发的事件..它不完美但浏览器本身并不支持此事件.
更新以保持这个答案新鲜:
如果你正在使用jQuery(今天应该对大多数人来说有点基础)那么一个很好的解决方案是使用jQuery为你提供的抽象,通过使用它的事件系统来监听window对象上的hashchange事件.
$(window).on('hashchange', function() {
//.. work ..
});
这里的好处是你可以编写代码,甚至不需要担心hashchange支持,但是你需要做一些魔术,以一种鲜为人知的jQuery特性jQuery special events的形式.
使用此功能,您基本上可以为任何事件运行一些设置代码,第一次有人尝试以任何方式使用事件(例如绑定到事件).
在此设置代码中,您可以检查本机浏览器支持,如果浏览器本身不实现此功能,您可以设置单个计时器来轮询更改,并触发jQuery事件.
这完全解除了你的代码需要理解这个支持问题,这种特殊事件的实现是微不足道的(获得一个简单的98%工作版本),但为什么这样做when somebody else has already.
标签:fragment-identifier,javascript,ajax,javascript-events,hashchange 来源: https://codeday.me/bug/20190911/1802837.html