2008-11-15 58 views
1

我用Javascript(JQuery)重寫了我的家庭網站,在後端對php進行ajax調用。這是你的標準「圖像縮略圖和一個主要圖像,當你點擊縮略圖時,主圖像會改變」這種事情。在使用Firefox時,一切都按預期工作,但在IE上,當我點擊縮略圖時,主圖像會變成我點擊的圖像,然後立即變回第一個。我試過MS Script Debugger無濟於事;我在啓動ajax調用的JavaScript代碼中設置了一個斷點,並且當我單擊縮略圖時斷點觸發。然後我打F5,它繼續,但不再發射。如果我使用Wireshark通過網絡觀察實際的TCP數據包,我可以看到我們確實向服務器發送了多個請求。我無法弄清楚第二個查詢(恢復到原始圖像的位置)的來源。如何在IE上找到流氓Ajax請求的來源?

有什麼建議嗎?我談論的一個例子是here

+0

你知道他們在說什麼。你會花90%的時間使它在Firefox,Safari,Opera和世界上其他所有瀏覽器上工作,然後90%的時間讓它在IE上運行。 – 2008-11-15 19:53:30

回答

3

調試通過您的網站在這裏是它看起來正在發生的事情:

第一圖像pocessed後,被拋出的調整大小事件,所以這段代碼被稱爲:

$(窗口).bind( 「resize」,function(){ResizeWindow('nicholas-1');});;});

正如你所知,它會重新加載你的畫廊。現在我不能告訴你爲什麼會出現這種情況,但這是麻煩開始的地方。

爲了將來的調試,我使用VS2008附加到IE。然後我把$阿賈克斯(休息)在:

// Send the data 
    try { 
     xhr.send(s.data); 
    } catch(e) { 
     jQuery.handleError(s, xhr, null, e); 
    } 

然後,我只是打其運行前兩個Ajax調用F5,然後我打開調用堆棧窗口時,我發現流氓Ajax調用將通話堆棧移回到我之前粘貼的功能。

祝你好運。

+0

我將不得不進行更多的調試,但禁用調整大小處理程序可以解決問題。謝謝! – 2008-11-16 01:46:43

0

IE是一件工作不是嗎?你有沒有嘗試過這樣的事情?

var inProcess = 0;

函數事件處理程序(){

if (inProcess == 0) { 

    inProcess = 1; 

    // do stuff 

    setTimeout('inProcess = 0', 5000); 

} 

}

可愛的孩子,順便。