2015-05-29 78 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 –