2011-03-21 54 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的每个链接现在都有一个事件处理程序),它可能影响或不影响您的特定实现。

注意:如果您真的想回答这个问题,我会接受一个更加谨慎和解释的答案。