How can I detect changes in location hash?(如何检测位置散列中的更改?)
问题描述
我使用Ajax和哈希进行导航。
有没有办法检查window.location.hash
是否像这样更改?
http://example.com/blah#123至http://example.com/blah#456
如果我在文档加载时选中它,它会起作用。
但是如果我有基于#hash的导航,那么当我在浏览器上按Back按钮时就不能工作(所以我从blah#456跳到blah#123)。
它显示在地址框中,但我无法用JavaScript捕获它。
推荐答案
真正做到这一点的唯一方法(也就是‘reallysimpleHistory’如何做到这一点)是通过设置一个持续检查当前哈希的时间间隔,并将其与以前的哈希进行比较,我们这样做,并让订阅者订阅我们在哈希更改时触发的更改事件。这并不完美,但浏览器本身确实不支持此事件。
更新以使此答案保持新鲜:
如果您使用的是jQuery(对于大多数人来说,jQuery现在应该是基础的),那么一个很好的解决方案就是使用jQuery提供的抽象,使用它的事件系统来侦听窗口对象上的hashchange事件。
$(window).on('hashchange', function() {
//.. work ..
});
这里的好处是您可以编写甚至不需要担心hashchange支持的代码,但是您确实需要使用一些不太出名的jQuery功能jQuery special events。
使用此功能,您基本上可以在有人首次尝试以任何方式使用事件(如绑定到事件)时,为任何事件运行一些设置代码。
在此安装代码中,您可以检查本机浏览器支持,如果浏览器没有本机实现此功能,您可以设置单个计时器来轮询更改,并触发jQuery事件。
这使您的代码完全不需要理解这个支持问题,这种特殊事件的实现是微不足道的(要获得一个简单的98%工作版本),但是为什么要这样做when somebody else has already。
这篇关于如何检测位置散列中的更改?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何检测位置散列中的更改?
基础教程推荐
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 动态更新多个选择框 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 响应更改 div 大小保持纵横比 2022-01-01