如何通过JavaScript处理URL更改

时间:2013-12-14 17:38:00

标签: javascript javascript-events

我知道在现代浏览器中,我可以静默更改URL(无需重新加载页面),如下所示:

window.history.pushState(“object or string”, “Title”, “/new-url”);

但我希望能够检测到URL中的更改。当用户在地址栏中输入新URL时,如何处理事件并阻止页面重新加载?

P.S。我知道我可以使用onhashchange,但我只是不想使用哈希:)

1 个答案:

答案 0 :(得分:1)

Event when window.location.href changes所述,没有民意调查就不可能。这是2010年。也许同时有一个HTML5浏览器的解决方案。

可能您已经知道不使用hashchange在服务器端,抓取,404检测等方面存在缺陷......

但是使用哈希也有缺点,特别是当涉及到邮件发送的深层链接时(重定向不传输哈希,通常由webmail客户端用来拥有干净的引用)。

我建议将经过测试的库用于url-routing和history API。我确定您可以在microjs.comJSterJSDB.IO找到一个。有很多可以在MSIE等禁用的浏览器上进行优雅的回退。

我最好的赌注是history.jsCrossroads.js(与Hasher一起)。

如果您已经使用了Backbone.js,AngularJS,Ember之类的MVC框架,那么您将获得免费的内容。

毕竟我不确定这些库中的任何一个是否能够在location.href更改时抑制(单页)页面的重新加载。由于你失去了大部分州,我会使用#hashes。恕我直言,单页应用程序的用户不应更改浏览器位置,而应使用应用程序的导航选项。