W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
onerror屬性表示error事件的事件處理程序的。針對(duì)不同類型的錯(cuò)誤,在不同的目標(biāo)上激發(fā)error事件:
安裝全局error事件處理程序?qū)τ谧詣?dòng)收集錯(cuò)誤報(bào)告非常有用。
由于歷史的原因,不同的參數(shù)被傳遞給window.onerror和element.onerror處理程序(以及關(guān)于錯(cuò)誤類型window.addEventListener的處理程序)。
window.onerror
window.onerror = function(message, source, lineno, colno, error) { ... }
參數(shù):
當(dāng)函數(shù)返回true時(shí),這可以防止觸發(fā)默認(rèn)事件處理程序。
window.addEventListener( 'error')
window.addEventListener('error', function(event) { ... })
ErrorEvent類型的事件包含有關(guān)事件和錯(cuò)誤的所有信息。
element.onerror
element.onerror = function(event) { ... }
element.onerror接受一個(gè)Event類型的單個(gè)參數(shù)的函數(shù)。
一個(gè)很好的例子就是當(dāng)你使用一個(gè)圖像標(biāo)簽時(shí),并且需要指定一個(gè)備份映像,以防您需要的服務(wù)器因任何原因而無法使用。
<img src="imagenotfound.gif" onerror="this.onerror=null;this.src='imagefound.gif';" />
我們?cè)诤瘮?shù)中使用this.onerror=null的原因 是,如果onerror圖像本身產(chǎn)生錯(cuò)誤,瀏覽器將陷入無限循環(huán)。
當(dāng)從不同來源加載的腳本中發(fā)生語法錯(cuò)誤時(shí),不會(huì)報(bào)告語法錯(cuò)誤的詳細(xì)信息,這樣可以防止泄漏信息。相反,報(bào)告的錯(cuò)誤只是"Script error"。這種行為可以在某些瀏覽器中使用<script>中的crossorigin屬性來重寫,并讓服務(wù)器發(fā)送相應(yīng)的CORS HTTP響應(yīng)標(biāo)頭。解決方法是隔離“Script error”,并處理它,并且知道錯(cuò)誤細(xì)節(jié)僅在瀏覽器控制臺(tái)中可見而不能通過JavaScript訪問。
window.onerror = function (msg, url, lineNo, columnNo, error) {
var string = msg.toLowerCase();
var substring = "script error";
if (string.indexOf(substring) > -1){
alert('Script Error: See Browser Console for Detail');
} else {
var message = [
'Message: ' + msg,
'URL: ' + url,
'Line: ' + lineNo,
'Column: ' + columnNo,
'Error object: ' + JSON.stringify(error)
].join(' - ');
alert(message);
}
return false;
};
當(dāng)使用內(nèi)嵌HTML標(biāo)記時(shí)(<body onerror="alert('an error occurred')">),HTML規(guī)范要求傳遞給onerror的參數(shù)被命名為event,source,lineno,colno,error。在還沒有實(shí)現(xiàn)這一要求的瀏覽器,他們?nèi)匀豢梢酝ㄟ^arguments[2]獲得arguments[0]。
規(guī)范 | 狀態(tài) | 注釋 |
---|---|---|
HTML Living Standard 在這個(gè)規(guī)范中定義了'onerror'。 |
Living Standard
|
在Firefox 14中,<script>加載失敗之前, window.onerror調(diào)用了消息“Error loading script”。這在bug 737087中得到修復(fù),現(xiàn)在 scriptElement.onerror在這種情況下被調(diào)用。
自Firefox 31以來,最后2個(gè)參數(shù)(colno和error)被添加,這意味著您可以通過提供的Error對(duì)象從window.onerror訪問腳本錯(cuò)誤的堆棧跟蹤。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: