相关疑难解决方法(0)

On - window.location.hash - 更改?

我正在使用Ajax和hash进行导航.

有没有办法检查是否window.location.hash改变了这样?

http://example.com/blah #123http://example.com/blah #456

如果我在文档加载时检查它,它可以工作.

但是如果我有基于#hash的导航,那么当我按下浏览器上的后退按钮时它就不起作用了(所以我从#456跳到了#123).

它显示在地址框内,但我无法用JavaScript捕获它.

javascript ajax javascript-events fragment-identifier hashchange

548
推荐指数
9
解决办法
39万
查看次数

如何通过history.pushState获得有关历史变化的通知?

因此,现在HTML5引入history.pushState了更改浏览器历史记录,网站开始将其与Ajax结合使用,而不是更改URL的片段标识符.

可悲的是,这意味着不再能够检测到这些呼叫了onhashchange.

我的问题是:是否有可靠的方法(黑客?;))来检测网站何时使用history.pushState?规范没有说明引发的事件(至少我找不到任何东西).
我尝试创建一个外观并替换window.history为我自己的JavaScript对象,但它根本没有任何效果.

进一步说明:我正在开发一个需要检测这些更改并相应操作的Firefox附加组件.
我知道几天前有一个类似的问题,询问听一些DOM事件是否有效但我宁愿不依赖它,因为这些事件可能由于很多不同的原因而产生.

更新:

这是一个jsfiddle(使用Firefox 4或Chrome 8),显示调用onpopstate时不会触发pushState(或者我做错了什么?随意改进它!).

更新2:

另一个(侧面)问题是window.location在使用时没有更新pushState(但我已经在这里读到了这个,我认为).

javascript firefox-addon browser-history pushstate

139
推荐指数
6
解决办法
7万
查看次数

如何检测JavaScript中的URL更改

如何检查JavaScript中的URL是否已更改?例如,使用AJAX的GitHub等网站会在#符号后附加页面信息,以创建唯一的URL而无需重新加载页面.检测此URL是否更改的最佳方法是什么?

  • onload再次调用事件?
  • 是否有URL的事件处理程序?
  • 或者必须每秒检查一次URL以检测更改?

javascript ajax

132
推荐指数
10
解决办法
18万
查看次数

用于侦听YouTube HTML5播放器中的网址更改的JavaScript

我正在撰写Chrome扩展程序,因此我需要能够收听YouTube网址中的更改(即,看到您切换了视频).YouTube使这很难,因为HTML5视频播放器没有完整的页面重新加载,没有更改URL片段(不能像其他答案所建议的那样监听hashchange事件).听pushState也不起作用.我花了很多时间在这里寻找答案,以及迄今为止我见过的所有答案(除了一个 - 我真的不想使用)不起作用.

我见过的唯一答案是设置超时以每秒运行一次以查看URL是否发生了变化(丑陋!).

编辑:可能重复的问题是一个完全不同的问题 - 一个处理收听URL更改另一个涉及获取扩展加载.

问题:如何在不轮询的情况下检测YouTube HTML5视频播放器中的网址更改?

javascript youtube html5

6
推荐指数
3
解决办法
1023
查看次数