2011-03-21 52 views
1

我有一個網站使用jQuery Address plugin from Asual進行導航。IE6和IE7後退/前向散列標記導航問題

我遇到的問題是,當用戶使用後退/前進按鈕時,使用IE6和IE7時,網站會在意外頁面結束。

下面是我現在正在做的事情的簡化版本。

$.address.init(function(event) { 
    defaultPage = "1"; 
}).change(function(event) { 
    $("#content").html('<div><img src="/images/activity indicator.gif"></div>') 
    $("#content").load("./pages/"+names+".html", function(){ 
    var names = $.map(event.pathNames, function(n) { 
     return n.substr(0, 1).toUpperCase() + n.substr(1); 
    }).concat(event.parameters.id ? event.parameters.id.split('.') : []); 
     pageScripts[names](); 
    }); 
}); 

如果我/頁轉到#/1,轉到#/2,然後轉到頁#/3上,我對頁面#/ 3,與任何沒有問題。當我在頁面#/3上IE6或IE7(Chrome,FF,IE8,IE9都可以正常工作)中點擊「返回」時,我會一直回到頁面/。點擊向前移動到頁/#3

它從散列標籤跳過歷史記錄。

但是,example from the website在IE6/IE7下正常工作。我無法找到我所做的和它正在做的事情之間的功能差異。

+0

這些不是標籤。 「hashtag」是Twitter命名法。 – BoltClock 2011-03-21 19:04:25

+0

@BoltClock你是對的,它實際上在RFC1738中被稱爲片段/錨點標識符。 - 但是,在JavaScript中,用於監視此事件的事件被稱爲'onhashchange'。所以我覺得這個用法是可以互換的。 – Incognito 2011-03-21 19:07:05

回答

0

您需要使用rel屬性。

<a href="/deep-link" rel="address:/deep-link">Deep link</a>

IE6/IE7似乎尊重這種用法來實現該功能。

這確實有副作用(即,與REL的每個鏈接現在都有一個事件處理程序),它可能影響或不影響您的特定實現。

注意:如果您真的想回答這個問題,我會接受一個更加謹慎和解釋的答案。