链接到外部页面的部分,不带哈希'#'(html5历史吗?)
Link to a section of external page without hash '#' (html5 history?)
关于不使用哈希'#'链接到同一站点外部页面部分的可能不同方法的任何建议?
如果我在一个完整的js/ajax场景,我可以轻松做到这一点,但搜索一些想法,如果有可能使用"更干净"的url比hashbangs有一个简单的滚动到节链接…
如果我理解正确,你想做一个位置更改到新页面,然后滚动到一个干净的URL页面上的给定区域?
如果是这样,这可以通过在。htaccess(或类似的配置)中重写URL和一点JavaScript来确定您应该在页面上的位置来完成:
. htaccess
例如,这将把所有对/otherpage/{section}的请求传递给otherpage.html(为了回答这个问题而简化)
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(otherpage/.*)$ otherpage.html [L]
JavaScript 然后,在otherpage.html中,您可以检测当前路径并相应地滚动页面。
switch( location.pathname ) {
case '/page/section-1/':
// scroll to section 1
break;
case '/page/section-2/':
// scroll to section 2
break;
case '/page/section-2/':
// scroll to section 2
break;
}
然而,现在你在页面上,如果你想要这个滚动效果继续不刷新页面,你将不得不考虑使用HTML5历史推送状态。对于这一点,History.js在过去对我来说工作得很好。
编辑:哦,注意location.pathname后面的斜杠。它可能在那里,也可能不在那里,所以你可能想在比较之前对它进行消毒。
什么是"hashbang"?你是说"#"吗?如果是这样,那么它几乎是链接到页面特定部分的正常和"干净"的方式。这就是它最初被发明的原因。
相关文章:
- 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历史吗?)