我的问题是这样的,但我的问题不在IE(未测试)中,而是在Chrome和Firefox中。不管怎样,这个问题没有答案。
我正在使用BBQ插件,代码为:
$(window).bind('hashchange', function(e) {
var href = $.param.fragment();
hrefOld = $("#loadZone").attr("src");
centerZoneActivePage = href;
// Create container for this url's content and store a reference to it in
// the cache.
cache[ href ] = $("#loadZone").attr("src", href);
alert("new: " +href);
});
// Since the event is only triggered when the hash changes, we need to trigger
// the event now, to handle the hash the page may have loaded with.
$(window).trigger( 'hashchange' );
实际情况是,当我在iframe("#loadZone")中加载新页面时,哈希值会正确更改。但当我点击浏览器返回按钮时,上一页正在加载,但没有更改哈希。当第二次点击时,hash会发生变化,活动页面会保存在iframe中。我不明白为什么散列在第一时间并没有改变,就像以前的页面加载一样。
注意:警告消息仅在单击后退按钮的第二次出现。
后退按钮点击总结:
- 第一次点击:Iframe上一页已加载,不显示警报消息,哈希未更改
- 第二次点击:如果框架页面仍然相同,则显示警告消息,更改哈希
如何同步?我使用的是jquery-1.7.1.js。有人在这个版本中使用过BBQ插件吗?我读过这个问题,但它不是决定性的。
好吧,我解决了这个问题,每次需要加载页面时都删除iframe并创建一个新的iframe。不漂亮,但解决了。不知怎的,iframe与历史控制发生了冲突。