javascript window.onerror事件学习新收获

 更新时间:2007年11月02日 22:25:12   作者:  
在捕获js错误时,我们通常使用try{}catch(e){}的方式,然后通过e.errorMessage等方式获取错误信息然后报告错误。但对于onerror事件可能很少问津,我们是否思考过如何报告错误所在的行号?如果想过这个是否也被这个问题所困扰过,是否认为在js里不可能捕获错误的行号呢?其实本人就遇到上述的几个问题,今日读某人写的一段js代码顿然发现了onerror事件,要说onerror这个时间也是n久以前就知道了,但对于其所带有的三个参数和其特殊性质却一直没有去了解过。经过自己的研究测试,对onerror事件有了一些新的认识和了解。在页面没有错误时,window.onerror事件是不存在的,也就是null(废话!没出错如果onerror出现还正常吗?)我们一般通过函数名传递的方式(引用的方式)将要执行的操作函数传递给onerror事件,如window.onerror=reportError;window.onerror=function(){alert('error')},但我们可能不知道该事件触发时还带有三个默认的参数,他们分别是错误信息,错误页面的url和错误行号。要知道这个可是事件,就如onclick和onmouseover等事件一样,但它是有参数。我们可以这样测试。 

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]

首先将testError方法绑定给onerror事件,然后在test方法里触发一个错误,在IE中执行时我们发现如下提示: 
--------------------------- 
Microsoft Internet Explorer 
--------------------------- 
参数个数:3个 
参数1:'error' 未定义 
参数2:file://E:\yanwei\test\testError.html 
参数3:14 
--------------------------- 
确定 
---------------------------
       可以发现,当出错时函数testError捕获到了三个参数。通过将函数绑定到onerror事件就可以在页面出错时捕获以上三个参数。 

在测试中还发现以下一些问题: 
1、通过在函数末尾加上return true,可以在函数出错时不会弹出系统的错误信息(IE)。 
2、如果页面出现多次错误,只捕获第一次错误并进行处理然后终止后面程序的执行。 
3、onerror事件并不能捕获所有的错误,只能捕获函数外或函数内错误(??这个是什么意思,可不是开玩笑呢),如 adasdf; 
function test(){ 
     aaaa; 

可以捕获到adasdf未定义的错误 
function test(){ 
       aaaa; 

可以捕获到aaaa未定义的错误,而对于functiona test(){}或function test()dd{} 的错误却不能捕获而会直接弹出系统错误信息。 
4、onerror在IE和FF等浏览器执行方式是一样的,而且都包含这三个参数。

相关文章

  • javascript删除一个html元素节点的方法

    javascript删除一个html元素节点的方法

    这篇文章主要介绍了javascript删除一个html元素节点的方法,可通过获取父节点再查找并删除子节点来实现该功能,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • 详解JavaScript中js对象与JSON格式字符串的相互转换

    详解JavaScript中js对象与JSON格式字符串的相互转换

    本篇文章主要介绍了JavaScript中js对象与JSON格式字符串的相互转换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-02-02
  • HTML+CSS+JavaScript实现可拖拽模态框

    HTML+CSS+JavaScript实现可拖拽模态框

    这篇文章主要为大家详细介绍了HTML+CSS+JavaScript实现可拖拽模态框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • JS生态系统加速探索Draft-js emoji插件功能及使用探索

    JS生态系统加速探索Draft-js emoji插件功能及使用探索

    这篇文章主要介绍了JS生态系统加速探索Draft-js emoji插件功能使用探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框

    如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框

    本文我将为大家介绍Bootstrap中的弹出窗口组件Modal,此组件简单易用,效果大气漂亮且很实用,感兴趣的朋友一起学习吧
    2016-03-03
  • 深入探讨javascript函数式编程

    深入探讨javascript函数式编程

    在函数式编程中,函数被看做是“一等公民”。JavaScript可以通过巧妙地函数组合来构建抽象,通过内嵌函数的方式,在软件开发的过程中,我们可以把更多的精力放在“函数要做什么”上,而不用太关心“函数如何做”的问题。
    2015-10-10
  • 基于javascript如何传递特殊字符

    基于javascript如何传递特殊字符

    在 JavaScript 中使用反斜杠来向文本字符串添加特殊字符,下面通过本篇文章给大家介绍javascript如何传递特殊字符,对js传递特殊字符相关内容感兴趣的朋友一起学习吧
    2015-11-11
  • JavaScript实现简单网页版计算器

    JavaScript实现简单网页版计算器

    这篇文章主要介绍了JavaScript实现简单网页版计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • javascript贪吃蛇游戏设计与实现

    javascript贪吃蛇游戏设计与实现

    这篇文章主要为大家详细介绍了javascript贪吃蛇游戏设计与实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • js 获取、清空input type=

    js 获取、清空input type="file"的值示例代码

    本篇文章主要是对js获取、清空input type="file"的值的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02

最新评论