发布于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/
来源:前端黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 前端黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-3
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!