0

雖然瀏覽器按預期執行函數'dummyFunc()',但在使用以下代碼片段來響應窗口大小調整事件時,IE8中出現腳本錯誤:在IE8窗口調整大小的JQuery/Javascript無效參數腳本錯誤

var jq = jQuery.noConflict(); 
var resizeTimer; 
    jq(window).resize(function() { 
     clearTimeout(resizeTimer); 
     //resizeTimer = setTimeout(reloadSlider(), 100, 'JavaScript'); 
     resizeTimer = setTimeout(dummyFunc(), 100, 'JavaScript'); 
    }); 

function dummyFunc() { 
    alert('hurra'); 
} 

所以,問題不在於瀏覽器不警告,這個問題是相當有Internet Explorer中顯示一個「腳本錯誤」的消息,這是不可愛的。我會很感激任何關於如何擺脫錯誤信息的提示。

謝謝

+1

請注意,IE中不支持第三個參數。看看這裏 - https://developer.mozilla.org/en-US/docs/Web/API/window.setTimeout - 「請注意,在第一種語法中向函數傳遞附加參數在Internet Explorer中不起作用。您希望在該瀏覽器上啓用此功能,則必須使用兼容性代碼「 –

回答

0

您必須在調試腳本時運行ie8。在查看頁面時按F12並從那裏開始調試。然後你必須分析你得到腳本錯誤的地方。

2

dummyFunc()更改爲dummyFunc。正如您所擁有的那樣,您正在立即執行該功能,然後將undefined(函數調用的結果)傳遞給setTimeout

你想,而不是傳遞給函數的引用:

resizeTimer = setTimeout(dummyFunc, 100, 'JavaScript'); 
0

resizeTimer是不確定的,直到第一個setTimeout的。嘗試if(resizeTimer) { clearTimeout(resizeTimer); ...

0

您正在通過調用它來立即執行dummyFuncdummyFunc()被函數的返回值取代,該函數未定義。

resizeTimer = setTimeout(dummyFunc(), 100, 'JavaScript'); 

只是省略在dummyFunc護腕將其傳遞作爲參考。

resizeTimer = setTimeout(dummyFunc, 100); 

我從來沒有見過你傳遞的最後一個參數,所以我離開了出來。這可能很容易在IE8中引發錯誤。