【问题标题】:How can I find the source of rogue Ajax requests on IE?如何在 IE 上找到恶意 Ajax 请求的来源?
【发布时间】:2008-11-15 19:26:26
【问题描述】:

我使用 JavaScript (JQuery) 重写了我的家庭网站,在后端对 PHP 进行 Ajax 调用。这是您的标准“一堆图像缩略图和一个主图像,当您单击缩略图图像时,主图像会发生变化”之类的东西。使用 Firefox 时一切正常,但在 IE 上,当我单击缩略图时,主图像变为我单击的图像,然后立即变回第一个图像。我试过 MS Script Debugger 无济于事;我在启动 Ajax 调用的 JavaScript 代码中设置了一个断点,当我单击缩略图时,断点就会触发。然后我按F5,它继续,但没有再次开火。如果我使用 Wireshark 观察网络上的实际 TCP 数据包,我可以看到我们肯定向服务器发送了多个请求。我不知道第二个查询(恢复到原始图像的那个)来自哪里。

有什么建议吗?我所说的一个例子是here

【问题讨论】:

  • 你知道他们说什么。您将花费 90% 的时间让它在 Firefox、Safari、Opera 和世界上所有其他浏览器上运行,然后再花 90% 的时间让它在 IE 上运行。

标签: javascript jquery ajax internet-explorer


【解决方案1】:

通过您的网站进行调试如下所示:

处理完第一张图片后,会抛出 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 调用时打开调用堆栈窗口并将调用堆栈返回到我之前发布的函数。

祝你好运。

【讨论】:

  • 我必须再调试一下,但禁用调整大小处理程序可以解决问题。谢谢!
【解决方案2】:

您可以使用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

【讨论】:

    【解决方案3】:

    IE 是一项工作,不是吗?你有没有尝试过这样的事情?

    var inProcess = 0;
    
    function eventHandler() {
    
        if (inProcess == 0) {
    
          inProcess = 1;
    
          // do stuff
    
          setTimeout('inProcess = 0', 5000);
    
        }
    
    }
    

    顺便说一句,可爱的孩子。

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 2011-05-10
      • 2020-01-03
      • 2016-11-18
      • 2019-02-04
      • 2013-09-09
      • 2012-03-29
      相关资源
      最近更新 更多