日期:2014-05-16 浏览次数:20343 次
onerror事件是在window对象触发的.
eg:
<script type='text/javascrpt'> window.onerror=function(){ alert('An error occurred'); return true; //prevent the web browser's default action. } window.onload=function(){ nonExistentFunction(); } </script>
?
?
onerror事件处理函数提供了三个参数
eg:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>js error details</title> <link rel=stylesheet href="" /> <style type="text/css"> <!-- --> </style> <script type="text/javascript"> window.onerror=function(sMessage, sUrl, sLine){ alert("An error occurred: \n"+sMessage+"\nURL: "+sUrl+"\nLine Number: "+sLine); return true; } </script> </head> <body onload='nonExsitentFunction();'> </body> </html>
图象载入错误.
eg:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>img load error</title> <link rel=stylesheet href="" /> <style type="text/css"> <!-- --> </style> <script type="text/javascript"> function handleLoad(){ document.images[0].onerror = function(){ alert("An error occurred loading the image."); } document.images[0].src='blue.gif'; } </script> </head> <body onload='handleLoad();'> <p>The image below attempts to load a file that doesn't exist.</p> <img/> </body> </html>
?
注意: 与window对象的onerror事件处理函数不同, image的onerror事件处理函数没有任何关于额外信息的参数.
?
处理语法错误.
onerror不仅可以处理exception,它还能处理语法错误,也只有它才能处理.
Attention: 事件处理函数必须是页面中的第一个出现的代码:
eg:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>js error details</title> <link rel=stylesheet href="" /> <style type="text/css"> <!-- --> </style> <script type="text/javascript"> window.onerror=function(sMessage, sUrl, sLine){ alert("An error occurred: \n"+sMessage+"\nURL: "+sUrl+"\nLine Number: "+sLine); return true; } alert('syntax error.'; </script> </head> <body> </body> </html>
使用onerror事件处理函数的主要问题是,它是BOM的一部分,所以没有任何标准能控制它的行为.因此,不同的web browser使用这个事件处理函数处理错误方式有明显的不同. 例如, 在IE中发生error事件时, 正常代码会继续执行: 所有的变量和数据都保留下来, 并通过onerror事件处理函数访问.然后在Mozilla中,正常的代码执行都会结束,同时所有错误发生之前的变量和数据都被销毁. Safari和Konqueror 不支持window对象上的确onerror事件处理函数,但是他们支持图象上的onerror事件处理函数. |
?
(选自JavaScript高级程序设计? 待续)