我使用 Backbone.js ,但由于 IE9 不支持 pushState API ,因此会转换该网址从/page
到/#page
。
我面临的挑战是需要关注<a href="#section">Go to section</a>
个片段,但点击后,片段部分#section
将从网址中删除(未添加),我需要它进行分享。
我该如何处理这种情况?
答案 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() {
}
});