从基于哈希的导航切换到HTML5历史API
Switching from hash-based nav to HTML5 History API
我想弄清楚如何使用历史API为我的网页。目前,它是一个简单的页面,导航栏通过将ID的display
更改为none
或block
来切换内容可见性。
我想切换到历史API,因为浏览器后退按钮内存,但所有的例子,我发现使用AJAX加载数据从一个单独的文件点击。我的页面不够大,不能保证异步加载。
是否有任何方法为常规url触发CSS属性改变的方式哈希做?
不,CSS只能通过URL的哈希组件来响应:target
。然而,如果你愿意,你仍然可以利用历史API;您只需要一点点额外的javascript。例如,你可以给<html>
元素一个data-target
属性,它会根据URL而变化,然后你的css可以通过以下方式对此做出反应:
[data-target="home"] #home-page { display: block; }
History API允许您为每个条目存储一些状态,因此您可以使用它来存储目标标识符,然后在"popstate"处理程序中再次检索它-例如
history.pushState({ target: 'home' }, '', '/home')
document.documentElement.dataset.target = 'home'
window.addEventListener('popstate', function (e) {
document.documentElement.dataset.target = e.state.target
})
相关文章:
- HTML5历史记录-返回上一个完整页面按钮
- HTML5历史API-操作不安全
- HTML5历史禁用转发按钮
- 更新HTML5历史中以前的状态对象
- 使用 html5 历史记录代替哈希 URL 来恢复用户的历史记录
- Html5 历史 api,任何方法检查 1 转发历史
- HTML5历史API弹出状态重新加载野生动物园刷新页面无休止
- HTML5历史记录,后退按钮和外部链接
- 如何使用 HTML5 历史记录使转发按钮在此示例中工作
- HTML5 历史 API 实现
- HTML5 历史 API 演示
- HTML5历史记录:如何查看弹出的URL(即,我们点击后退按钮时所在的页面)
- html5历史导航:除了页面加载之外,没有触发popstate
- 检查浏览器兼容性是否支持HTML5历史API
- 当浏览器不支持HTML5历史API时,有条件地通过ajax加载history.js
- 如何在 HTML5 历史记录状态中存储函数
- 使用HTML5历史记录时如何处理页面刷新
- HTML5历史api: window.history.back()丢失history.state
- 从基于哈希的导航切换到HTML5历史API
- 链接到外部页面的部分,不带哈希'#'(html5历史吗?)