在我的骨干应用程序中,当我在IE 7中加载它并输入url:http://mydomain.com/
- 它加载主视图时 - IE7在末尾添加了一个哈希标记:http://mydomain.com/#
这很奇怪,因为所有其他浏览器都没有。
任何想法为什么?
还有一件事:
我将html链接硬编码为主视图:
<a href="#">main view</a>
放置标签是一种好习惯吗?或者我应该在href中添加其他东西吗?
也许:javascript:void(0)
答案 0 :(得分:2)
'#'表示您已登陆主页。所以,如果你让它像那样,那就没什么大不了的了。 becoz backbone将始终在IE7中使用基于'#'的路由。
可能您使用Backbone.Router
类来处理应用中的路由。 Backbone在IE7中为您处理它非常好。请查看backbone's navigate method以获取更详细的信息。
答案 1 :(得分:2)
Backbone这样做是因为IE是您使用的唯一不支持history.pushState
的浏览器。
Backbone在底层检查,如果它在支持pushState的浏览器中加载,它将使用它作为单页路由器。
如果在没有此类支持的浏览器中加载骨干网,它会查找修改浏览器历史记录的唯一其他方法,而无需重新加载页面:hashchange
。
Backbone立即将哈希值添加到URL中,以便您知道它正在被使用,据我所知。
答案 2 :(得分:0)
将主题标签设置为跳转到页面上的特定位置是一种很好的做法。使用没有以下位置的#标签不是。如果您想要一个跳转到主页面的链接,只需插入完整的URL,如http://mydomain.org/
,如果您想跳回到顶部,请在页面顶部指定一个锚#top并使用它而不是#。使用javascript:void(0)
是一个颇具争议的话题。通常你应该将javascript与html分开。
至于回答你的主要问题:只要你没有使用任何自定义逻辑来处理锚点,在URL中拥有#就没什么坏处。如果您单击文档中的#链接,它会将您重定向到页面顶部。因此,如果您完全重新加载页面,那么无论如何您都将处于最顶层,因此如果IE决定添加主题标签,则不会受到影响。