用于语法和内部错误的 JavaScript 事件侦听器

javascript event listener for syntax and internal errors

本文关键字:JavaScript 事件 侦听器 错误 语法 内部 用于      更新时间:2023-09-26

我正在研究一个函数,以便在页面上出现js错误时跟踪。 我有 4/6 种错误类型在工作,但似乎无法找出语法错误的函数,或者它们只是停止脚本执行到不起作用的程度? 另外,我不确定如何测试内部错误? 编辑:InternalError 仅在 Firefox 中,但需要对 EvalError 进行测试,我将单独发布。另一个编辑:看起来EvalError是遗留的,现代浏览器并不完全支持。

不能使用像jQuery这样的库,只能使用本机js。

以下是添加了答案的代码:

   errorTracking = function errorCaught( ev ) {
    document.getElementById('error').innerHTML = '';
    var errFile = '';
    var errLine = '';
    if(ev.filename) { errFile = ev.filename; }
    if(ev.lineno) { errLine = ev.lineno; }
    var errStr = 'ERROR: ' + ev.error + ', LOCATION: ' + errFile + ', LINE NUMBER:' + errLine;
    document.getElementById('error').innerHTML = '<strong>Message:</strong> ' + ev.error + '<br /><strong>Location:</strong> ' + errFile + '<br /><strong>Line Number:</strong> ' + errLine;
    // Omniture Error Tracking.
    //_satellite.setVar('jsError', errStr);
  ev.preventDefault();
};
if(window.addEventListener) {
    window.addEventListener( "error", errorTracking, false );
    document.getElementById('errRef').addEventListener('click', function() {
        var refErr = asdf.asdf.length;
    });
    document.getElementById('errTyp').addEventListener('click', function() {
        var typeErrVar = null;
        var typeErr = typeErrVar();
    });
    document.getElementById('errRan').addEventListener('click', function() {
        Array.apply(null, new Array(1000000)).map(Math.random);
    });
    document.getElementById('errURI').addEventListener('click', function() {
        decodeURIComponent("%");
    });
    document.getElementById('errSyn').addEventListener('click', function() {
        var script = document.createElement('script');
        script.text = document.getElementById('error');
        document.getElementsByTagName('head')[0].appendChild(script);
    });
    document.getElementById('errEva').addEventListener('click', function() {
    });
}

http://jsfiddle.net/swv55c35/17/

<script/>将被

完全解析,当脚本包含语法错误时,整个脚本将被丢弃。在处理错误的脚本之外创建语法错误,它将起作用。

http://jsfiddle.net/swv55c35/3/