当页面加载时,IE7在我网站主要网址的末尾添加了一个哈希标记

问题描述:

在我的骨干应用程序中,当我在IE 7中加载并键入网址:http://mydomain.com/ - 加载主视图时 - IE7添加了一个哈希标记在最后:http://mydomain.com/#当页面加载时,IE7在我网站主要网址的末尾添加了一个哈希标记

这很奇怪,因为所有其他浏览器都没有。

任何想法为什么?

一件事:

我一个硬编码的HTML链接到主视图:

<a href="#">main view</a> 

它是在将哈希标签好的做法呢?或者我应该把其他东西放在href中?

可能:javascript:void(0)

+0

'#'对网址没有任何作用,除非网页上存在锚点 –

+0

可能相关:http://stackoverflow.com/questions/4973936/backbone-js-cause-bug-only-in- IE7 – woz

'#' 意味着你降落的主页。所以,如果让它变成这样,这不是什么大问题。 becoz骨干网将始终在IE7中使用基于'#'的路由。

可能您使用Backbone.Router类来处理您的应用程序中的路由。 Backbone在IE7中为你处理它非常好。看看backbone's navigate method更详细的使用它。

将哈希标签设置为跳转到页面上的特定位置是很好的做法。使用没有以下位置的标签不是。如果你想要一个链接跳转到你的主页,只需插入完整的URL,如http://mydomain.org/,如果你想跳回顶部,请在页面顶部指定一个锚点#top,并使用该页面代替#。使用javascript:void(0)是一个相当有争议的话题。一般来说,你应该从HTML中分离出JavaScript。

至于给你的主要问题的答案:只要你没有使用任何定制逻辑来处理锚点,只要在URL中有#就没有害处。如果您在文档中点击了#链接,它会将您重定向到页面顶部。因此,如果您完全重新加载页面,则无论如何您都将位于顶部,因此如果IE决定添加标签,它不会受到伤害。

Backbone会这样做,因为IE是您使用的唯一不支持history.pushState的浏览器。

Backbone检查这个问题,如果它加载到支持pushState的浏览器中,它将使用它作为单页面路由器。

如果骨干网在没有这种支持的情况下加载浏览器,它会寻找修改浏览器历史记录而不重新加载页面的唯一方法:hashchange。据我所知,Backbone会立即将哈希值添加到URL中,以便您知道正在使用该哈希值。