我有一些代码(由另一位开发者编写),它在WordPress中进行AJAX页面加载(例如,没有页面重新加载),当您单击导航项时,AJAX刷新主内容区域。我的问题是它在IE7中出现问题,而我不知道从哪里开始调试。
原始开头是:
var queue = 0;
$('document').ready(function() {
window.addEventListener("hashchange", hashChange, false);
// Define window location variables
var windowHost = window.location.host,
windowHash = window.location.hash,
windowPath = window.location.pathname;
但我改变了它们,将addEventListener
条件化,基于该方法是否存在。 一些研究告诉我,这个方法在旧版本的IE中不可用(例如,在我的情况下是7)。 此外,IE7调试控制台将其识别为不可用的方法,因此非常明显。 我将这些行重写如下,但代码仍然无法工作:
var queue = 0;
$('document').ready(function() {
if(window.addEventListener) {
window.addEventListener("hashchange", hashChange, false);
}
else if (window.attachEvent) {
window.attachEvent("hashchange", hashchange, false);
}
// Define window location variables
var windowHost = window.location.host,
windowHash = window.location.hash,
windowPath = window.location.pathname;
完整的原始脚本可以在此pastebin上查看:http://pastebin.com/Jc9ySvrb
hashchange
事件。对于IE7,您必须通过setInterval
检测哈希更改。 - Rob WhashChange
后,难道不应该使用oldHref = newHref
吗? - Oriol_oldHref
?直接用oldHref
调用hashChange
,然后再更新oldHref
不就可以了吗? - OriolhashChange
函数抛出错误。那么oldHref
永远不会被重置,并且该函数会一遍又一遍地被调用。为了避免这个问题,我在使用它之前将其存储在本地变量中。 - Rob WhashChangeFuncs
是已注册回调函数的列表,在哈希值改变时被调用。 - Rob W