我正在使用pushState为我的网站上的Ajax内容创建有意义的URL。我想在用户单击前进或后退按钮时刷新Ajax内容。但是我遇到了问题,因为Chrome(正确)在“历史遍历”(前进/后退按钮)和“结束”(页面加载)上都暗示了onpopstate。我想创建一个区分页面加载和历史遍历的onpopstate处理程序,因为如果已经成功加载了我的Ajax内容,我不希望刷新它。有人可以帮助我区分两者吗?

window.onpopstate = function (event) {
    // If : Forward/back button pressed
        // Reload any ajax content with new variables
    // Else : Page load complete
        // Do nothing - content already loaded and correct
}

有关chrome和onpopstate的更多详细信息,请参见http://code.google.com/p/chromium/issues/detail?id=63040

谢谢

最佳答案

一种方法是在页面加载时将变量初始化为false,然后在popstate事件上检查该变量。如果仍然为假,则将其设置为true而不执行任何操作。从那时起,所有其他popstate事件都应仅来自后退/前进事件。

var loaded = false;

window.onpopstate = function(e) {
    if (!loaded) {
        loaded = true;
        return;
    } else {
        // run your stuff...
    }
}

关于javascript - onpopstate处理程序-Ajax后退按钮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5257819/

10-08 22:01