0

我有一个应用程序,它结合使用 onhashchange 事件(适用于新浏览器)和 Ben Alman 的 hashchange 插件(适用于旧浏览器)来跟踪历史记录,同时进行 ajax 调用或操作。在所有浏览器中都像魅力一样工作,后退和前进按钮让用户可以浏览通过更改哈希记录的操作。到目前为止,一切都很好。现在我们的页面将托管在差异域(跨域)中客户端页面的 iframe 中。Chrome 有点工作,但如果你对历史进行许多更改,它会在某个时候停止工作(我们可以忍受)。IE 根本不起作用。当我通过单击链接并更新哈希来导航我们的应用程序时,会在父页面中创建新的历史记录项,但是当我点击后退按钮时,嵌套页面中的哈希不会更新,因此 hashchange 事件永远不会触发。以前有人解决过这个问题吗?非常感谢

初始化哈希更改事件处理

if ("onhashchange" in window && !($j.browser.msie && $j.browser.version == '7.0')) {
    window.onhashchange = function() {
        var params = parseHash(location.hash)

        if (params.tabId) {
            if (getSelectedTabId() == params.tabId) return;
            reloadPage(params.tabId);
        }
    };
}
else {// Plugin for older browsers
    $j(window).bind('hashchange', function() {            
        var params = parseHash(location.hash)
        if (params.tabId) {
            if (getSelectedTabId() == params.tabId) return;
            reloadPage(params.tabId);
        }
    });
}
4

0 回答 0