链接到外部页面的一部分没有哈希'#' (html5历史?)

时间:2014-08-08 23:05:59

标签: javascript jquery hashbang

关于可能的不同方法链接到同一网站的外部网页的一部分而不使用哈希'#'的任何建议?

如果我处于一个完整的js / ajax场景中,我可以轻松地做到这一点,但是如果可以使用'clean'urls而不是hashbangs可以使用简单的滚动到部分链接来搜索一些想法...

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您想要对新页面进行位置更改,然后使用干净的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历史记录pushState。为此,History.js过去对我来说效果很好。

编辑:哦,并在location.pathname中观察尾随斜杠。它可能存在也可能不存在,因此您可能需要在比较之前对其进行消毒。

答案 1 :(得分:-1)

什么是“hashbang”?你的意思是 ”#”?如果是这样,那么它几乎是 正常和“干净”的方式链接到页面的特定部分。这就是它首先被发明的原因。其他任何东西都是hackery。