我知道在现代浏览器中我可以静默更改URL(无需重新加载页面),如下所示:
window.history.pushState(“object or string”,“Title”,“/new-url”);
但我希望能够检测到URL中的更改.当用户在地址栏中输入新URL时,如何处理事件并阻止页面重新加载?
附:我知道我可以使用onhashchange但我只是不想使用哈希:)
解决方法
如
Event when window.location.href changes所述,没有民意测验是不可能的.这是2010年.也许同时有一个HTML5浏览器的解决方案.
可能你已经知道不使用hashchange有关于服务器端,爬行,404检测的缺点,……
但是使用哈希也有缺点,特别是当涉及到邮件发送的深层链接时(重定向不传输哈希,通常由webmail客户端用来拥有干净的引用).
我建议使用经过测试的库来进行url-routing和history API.我确定你会在microjs.com,JSter或JSDB.IO找到一个.有很多可以在像MSIE这样的禁用浏览器上进行优雅的回退.
我最好的赌注是history.js和Crossroads.js(与Hasher一起).
如果你已经使用像Backbone.js,AngularJS,Ember之类的MVC框架,你将获得你想要的免费版.
毕竟我还不确定当location.href发生变化时,这些库是否能够抑制(单页)页面的重新加载.由于你失去了大部分州,我会使用#hashes.恕我直言,单页应用程序的用户不应更改浏览器位置,而应使用应用程序的导航选项.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。