2016-11-02 19 views
-2

链接(片段)我使用Backbone.js的但作为IE9不支持pushState的API时,URL被从/page转换为/#page手柄锚在IE9

挑战是我需要关注<a href="#section">Go to section</a>片段,但一旦点击,片段部分#section将从URL中删除(未添加),我需要它共享。

我该如何处理这种情况?

+0

我不明白你的意思是_“最后一部分将被删除”_? –

+0

此外,请提供[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 –

+0

我编辑了我的详细问题,请检查 –

回答

0

如果你需要#page#section只使用

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

锚链接是完全取代上点击。

Multiple fragment identifiers correct in URL

从规格上来看,一个 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() { 

    } 
}); 
+0

我无法修改HTML标签。这些已经解决了。 –

+0

@BarbuBarbu我更新了答案,尽我所能提供的细节,但你应该进一步澄清你的问题。 –

+0

我试图做一个codepen预览,brb –