2014-01-16 39 views
4

在我的骨幹應用程序中,當我在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

回答

2

'#' 意味着你降落的主頁。所以,如果讓它變成這樣,這不是什麼大問題。 becoz骨幹網將始終在IE7中使用基於'#'的路由。

可能您使用Backbone.Router類來處理您的應用程序中的路由。 Backbone在IE7中爲你處理它非常好。看看backbone's navigate method更詳細的使用它。

0

將哈希標籤設置爲跳轉到頁面上的特定位置是很好的做法。使用沒有以下位置的標籤不是。如果你想要一個鏈接跳轉到你的主頁,只需插入完整的URL,如http://mydomain.org/,如果你想跳回頂部,請在頁面頂部指定一個錨點#top,並使用該頁面代替#。使用javascript:void(0)是一個相當有爭議的話題。一般來說,你應該從HTML中分離出JavaScript。

至於給你的主要問題的答案:只要你沒有使用任何定製邏輯來處理錨點,只要在URL中有#就沒有害處。如果您在文檔中點擊了#鏈接,它會將您重定向到頁面頂部。因此,如果您完全重新加載頁面,則無論如何您都將位於頂部,因此如果IE決定添加標籤,它不會受到傷害。

2

Backbone會這樣做,因爲IE是您使用的唯一不支持history.pushState的瀏覽器。

Backbone檢查這個問題,如果它加載到支持pushState的瀏覽器中,它將使用它作爲單頁面路由器。

如果骨幹網在沒有這種支持的情況下加載瀏覽器,它會尋找修改瀏覽器歷史記錄而不重新加載頁面的唯一方法:hashchange。據我所知,Backbone會立即將哈希值添加到URL中,以便您知道正在使用該哈希值。

相關問題