2015-05-29 77 views
-2

如何在addEventListener中添加try catch?有什麼辦法嗎?在addEventListener上嘗試{...} catch {...}

我需要在內部功能在的addEventListener或的attachEvent使用嘗試捕捉不

document.addEventListener("DOMContentLoaded", function (event) { 
X(); 
    }); 


    document.attachEvent("onreadystatechange", function() { 
     if (document.readyState === "complete") { 
      X(); 
     } 
    }); 
+0

HTTPS://developer.mozilla。 org/en-US/docs/Web/JavaScript/Reference/Statements/try ... catch – AmmarCSE

+0

爲什麼你需要try-catch?爲什麼不使用它? –

+1

我不明白爲什麼人們會倒下。 – rottenoats

回答

4
document.addEventListener("DOMContentLoaded", function (event) { 
     try { 
      x(); 
     } catch (e) { 
      alert(e.message); 
     } 
    }); 


    document.attachEvent("onreadystatechange", function() { 
     if (document.readyState === "complete") { 
      try { 
       x(); 
      } catch (e) { 
       alert(e.message); 
      } 
     } 
    }); 

如果你正面臨的問題與事件由於不同瀏覽器功能的註冊使用以下代碼

if (document.addEventListener){ 
    document.addEventListener(...); 
} else if (document.attachEvent){ 
    document.attachEvent(...); 
} 

更廣義的方式

function addEvent(evnt, elem, func) { 
    if (elem.addEventListener) // W3C DOM 
     elem.addEventListener(evnt,func,false); 
    else if (elem.attachEvent) { // IE DOM 
     elem.attachEvent("on"+evnt, func); 
    } 
    else { // No much to do 
     elem[evnt] = func; 
    } 
} 
+0

工作js:https://jsfiddle.net/mj8aLkgh/ –

+0

我們需要使用addEventListener或attachEvent的try catch而不是內部函數 –

+0

檢查更新的答案。對於通用代碼,你可以參考以下鏈接 http://stackoverflow.com/a/6927800/3264939 –

3

您可以簡單地添加它像

document.addEventListener("DOMContentLoaded", function (event) { 
    try{ 
     X(); 
    } 
    catch(e){ 
    //How you want to handle it 
    } 
}); 
+0

我們需要使用addEventListener或attachEvent的try catch而不是內函數 –

+0

爲什麼?爲什麼在這個世界中,你需要試着去追加一個事件監聽器?它就像'if(document){document.addEventListener' ...一樣簡單。... –

+0

因爲我們使用通過java腳本函數鏈接到軟件的軟電話,並且此addEventListener引發exceletions,並且我們認爲它可能是由交叉注射,唯一的方法來確認或放棄這個想法是通過添加try catch –