我使用Javascript(JQuery)重写了我的家庭网站,在后端对php进行ajax调用。这是你的标准“一组图像缩略图和一个主要图像,当你点击缩略图时,主图像会改变”。使用Firefox时,一切都按预期工作,但在IE上,当我点击缩略图时,主图像变为我点击的图像,然后立即变回第一个。我试过MS Script Debugger无济于事;我在启动ajax调用的javascript代码中设置了一个断点,当我点击缩略图时,断点会触发。然后我按了F5然后继续,但不再发射。如果我使用Wireshark通过网络观察实际的TCP数据包,我可以看到我们肯定会向服务器发送多个请求。我无法弄清楚第二个查询(恢复到原始图像的查询)的来源。
有什么建议吗?我所谈论的一个例子是here。
答案 0 :(得分:3)
通过您的网站调试这里发生的事情:
第一个图像被处理后,抛出resize事件,因此调用此代码:
$(window).bind(“resize”,function(){ResizeWindow('nicholas-1');});;});
如您所知,重新加载您的图库。现在我可以告诉你为什么会发生这种情况,但这就是麻烦开始的地方。
为了将来参考调试,我使用VS2008连接到IE。然后,我在$ ajax()处暂停:
// Send the data
try {
xhr.send(s.data);
} catch(e) {
jQuery.handleError(s, xhr, null, e);
}
然后我只需按F5运行前两个ajax调用,然后当我找到流氓ajax调用时打开调用堆栈窗口并将调用堆栈移回到我之前粘贴的函数。
祝你好运。答案 1 :(得分:1)
您可以使用Fiddler,一个免费的Internet Explorer调试代理。当我不得不在IE上调试特定的,与服务器相关的问题时,这对我很有帮助。
这是Introduction to Fiddler on MSDN。
alt text http://i.msdn.microsoft.com/Bb250446.ie_introfiddler_fig04(en-us,VS.85).gif
答案 2 :(得分:0)
var inProcess = 0;
function eventHandler(){
if (inProcess == 0) {
inProcess = 1;
// do stuff
setTimeout('inProcess = 0', 5000);
}
}
顺便说一下,可爱的小孩。