捕获脚本错误 - 类型,行和文件

时间:2012-01-13 15:10:00

标签: javascript debugging

window.onerror = function(type, file, line){
        if(type) {
            console.log(type);
        }
        if(file) {
            console.log(file);
        }
        if(line) {
            console.log(line);
        }
    }

当某些.js文件出错时,此代码返回“脚本错误”。我需要错误的类型,文件和行。我怎么才能得到它? 当窗口抛出错误时,此脚本工作正常但在.js文件中出现错误时则不一样。 我知道我可以在控制台上找到这些东西,但想象我没有,我无法安装。

3 个答案:

答案 0 :(得分:1)

window.onerror = ErrorLog;
function ErrorLog (msg, url, line) {
    console.log("error: " + msg + "\n" + "file: " + url + "\n" + "line: " + line);
    return true; // avoid to display an error message in the browser
}

答案 1 :(得分:1)

Cryptic "Script Error." reported in Javascript in Chrome and Firefox的帖子应该回答您的“脚本错误”。问题。即它可能是由“同源政策”引起的。

虽然我仍然在寻找为什么webkit会给我“未定义”文件名和未捕获例外的“0”行号。

答案 2 :(得分:-1)

这是我用来捕获错误的方法。我请它一个图像,其url指向服务器端脚本。

function logJSErrors(errObj) {
  if (!errObj || !errObj.lineNumber || errObj.lineNumber == 0) {
    return; // can't use it any way.
  }
  if (window.location && window.location.toString().indexOf('rfhelper32.js') >= 0) {
    return; // ignore the stupid Norton/Firefox conflict
  }

  var img = new Image();
  img.src = "/jserror?m=" + encodeURIComponent(errObj.message) +
      "&location=" + encodeURIComponent(window.location) +
      "&ln=" + encodeURIComponent(errObj.lineNumber) +
      "&url=" + encodeURIComponent(errObj.fileName) +
      "&browser=" + encodeURIComponent(errObj.browserInfo);
}

window.onerror = function (msg, url, line) {
  logJSErrors({ message : msg,
    lineNumber : line,
    fileName : url,
    browserInfo : window.navigator.userAgent
  });

  // if a jquery ajax call was running, be sure to make the spinning icons go away
  if (jQuery) {
    try {
      jQuery.event.trigger("ajaxStop");
    } catch(e) {/* do nothing */
    }
  }

};