程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

带有 hashchange 的网站 - 查询 popstate 事件是否可用?

发布于2022-01-25 13:33     阅读(1215)     评论(0)     点赞(13)     收藏(4)


我从未使用过 HTML5 onpopstate/pushState 方法。但是,我正在构建(或已经构建)一个网站,在该网站中滚动页面会将地址栏中的哈希更改为视口中当前显示元素的 ID。所以我的单页布局上有一种浏览器历史和深度链接。

我仍然通过设置top.location.hash和使用该hashchange()功能来做到这一点。现在我遇到了这个新的 HTML5 popstate/onPushstate 方法,并认为这会很有趣……

首先:使用这种popstate/onPushState方法有什么好处?使用它比使用经典方式更好top.location.hash吗?性能更好吗?

如果是这样,有没有办法查询或找出当前浏览器是否支持这种方法?所以我可以将这些方法用于现代浏览器,并在旧浏览器中使用旧方法。

那可能吗?如果是,那么如何?


解决方案


您可以使用 html5 历史 API 做更多的事情。

您可以替换历史记录中的当前项目或创建一个新项目。使用主题标签解决方案,您只能添加新的。

当您创建或替换历史条目时,您还可以更改 url 并传递一个 javascript 对象,该对象将在 popstate 中返回给您,其中可以包含任何数据。

github (http://www.github.com) 是一个很好地使用这个 api 的很好的例子。在开始时,他们发送了一次完整页面,之后他们更改页面和 url 以匹配您将在初始请求时加载的新页面。(这意味着刷新效果很好)

如果你想测试历史支持,你可以这样做:

if (history && history.pushState)



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.qianduanheidong.com/blog/article/295457/da19969b31600e3dd85a/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

13 0
收藏该文
已收藏

评论内容:(最多支持255个字符)