处理IE9中的锚点链接(片段)

时间:2016-11-02 15:06:13

标签: javascript html backbone.js internet-explorer-9

我使用 Backbone.js ,但由于 IE9 不支持 pushState API ,因此会转换该网址从/page/#page

我面临的挑战是需要关注<a href="#section">Go to section</a>个片段,但点击后,片段部分#section将从网址中删除(未添加),我需要它进行分享。

我该如何处理这种情况?

1 个答案:

答案 0 :(得分:0)

如果您需要#page#section,请使用

<a href="#page/section">Go to section</a>

锚点链接在点击时完全替换。

来自Multiple fragment identifiers correct in URL

  

从规范的角度来看,a   fragment可以包含   以下字符(我已经扩展了制作):

fragment    = *( ALPHA / DIGIT / "-" / "." / "_" / "~" / "%" HEXDIG HEXDIG  "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / > ";" / "=" / ":" / "@" / "/" / "?" )
     

所以,不,该片段不得包含普通#;它必须编码   与%23

这意味着#page#section不是有效的片段。

如果每次点击后,网址都会回到#page,这可能是因为您要在某处手动替换片段,例如

Backbone.history.navigate('#page');

如果您无法修改HTML,则可以创建新路线:

var AppRouter = Backbone.Router.extend({
    routes: {
        'page': 'pageRoute',
        'section': 'sectionRoute'
    },

    pageRoute: function() {

    },
    sectionRoute: function() {

    }
});