关于在不使用哈希“#”的情况下链接到同一站点的外部页面的一部分的可能不同方法的任何建议?
如果我在一个完整的 js/ajax 场景中,我可以轻松地做到这一点,但是如果可以使用比 hashbangs 更清洁的 url 来简单滚动到部分链接,请搜索一些想法......
关于在不使用哈希“#”的情况下链接到同一站点的外部页面的一部分的可能不同方法的任何建议?
如果我在一个完整的 js/ajax 场景中,我可以轻松地做到这一点,但是如果可以使用比 hashbangs 更清洁的 url 来简单滚动到部分链接,请搜索一些想法......
如果我理解正确,您想对新页面进行位置更改,然后使用干净的 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 pushState。为此,History.js过去对我来说效果很好。
编辑:哦,注意 location.pathname 中的斜杠。它可能存在也可能不存在,因此您可能需要在比较之前对其进行消毒。
什么是“哈希棒”?你的意思是 ”#”?如果是这样,那么它几乎是链接到页面特定部分的正常且“干净”的方式。这就是它最初被发明的原因。其他任何东西都是骇客。