如何使用浏览器中的BACK按钮检测用户打开的页面?

时间:2009-08-21 16:29:29

标签: javascript

想法是显示消息,这将是因为当他使用“后退”按钮时,应用程序的ajax部分可能会错误地显示错误信息。 是的,有很多讨论,但没有解决方案。 我发现的最佳:在服务器端存储有关最后一页的信息,并通过ajax检查当前页面与服务器信息。 但是通过这种方式,同一个用户不可能使用2个浏览器窗口。

3 个答案:

答案 0 :(得分:1)

您可能希望开发使用url#(hash)来存储客户端状态

查看http://www.asual.com/swfaddress/,Flash和ajax使用它来处理浏览器历史记录ajax,

Silverlight 3.0使用类似的技术在url中使用#(hash)for state。

答案 1 :(得分:0)

真正的解决方案是让客户端维护状态,而不是服务器。如果您在服务器上保留了很多客户端状态,后退按钮不起作用,那么您违反了互联网的法律:)

答案 2 :(得分:0)

此解决方案可能适用于您的案例,也可能不适用于您的案例,它可能适用于您的浏览器,也可能不适用。它似乎在IE7上对我有用,其中每个页面在URL查询字符串中引用了一个独特的“小部件ID” -

//try to detect a bad back-button usage; 
//widgetId not match querystring parameter did=#
var mustReload = false;
if (location.search != null && 
    location.search.indexOf("&did=") > 0)
{
    var urlWidgetId = location.search.substring(
        location.search.indexOf("&did=")+5);
    if (urlWidgetId.indexOf("&") > 0)
    {
        urlWidgetId = urlWidgetId.substring(
            0,urlWidgetId.indexOf("&"));
    }
    if (currentDashboard != urlWidgetId)
    {
        mustReload = true;
    }
}
if (mustReload)
{
     ... //reload the page to resynch here
}