【问题标题】:javascript: how to display script errors in a popup alert?javascript:如何在弹出警报中显示脚本错误?
【发布时间】:2011-02-05 23:49:45
【问题描述】:

我想在弹出警报中显示脚本错误,而不是在浏览器控制台中显示它们。

window.onerror = function() {
  var message = /* get error messages and put them here */;
  alert(message);
  return true;
};

【问题讨论】:

  • 请注意,onerror 事件仅受 IE 和 Mozilla 支持。
  • 那么有没有跨浏览器的解决方案呢?我的意思是,webkit 支持的类似功能
  • 你的意思是除了IE和Mozilla之外还有其他浏览器???当!我需要出去更多:)
  • 实际上它会在 WebKit 中得到支持(希望很快) - 请参阅 phwinfo.com/forum/comp-lang-javascript/…
  • 是的!但我遇到了另一个问题。似乎 onerror 只支持这 3 个参数。无法捕获特定名称的错误。

标签: javascript error-handling


【解决方案1】:

是的,这是正确的方法。

在此处查看参考:

http://www.javascriptkit.com/javatutors/error2.shtml

以及如何在此处查看错误的更多详细信息的说明:

http://www.javascriptkit.com/javatutors/error3.shtml

他们的例子:

window.onerror = function(msg, url, linenumber) {
    alert('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber);
    return true;
}

如果您希望在单个弹出窗口中显示错误列表,那就比较麻烦了。

由于错误是一一发生的,您需要执行以下操作:

  • 在某些数组中拥有window.onerror 处理程序存储错误详细信息
  • 定期检查该数组 - 通过计时器,或在每第 N 次调用 window.onerror 处理程序时,或两者兼而有之。

    当检查发生时,处理整个数组,根据需要显示内容,并清空一个数组

【讨论】:

  • 谢谢!所以答案是:window.onerror = function(message) { alert(message);返回真; };刚刚测试过!
【解决方案2】:

以防万一有人想在 jQuery 中使用它:

$(window).on("error", function(evt) {

    console.log("jQuery error event:", evt);
    var e = evt.originalEvent; // get the javascript event
    console.log("original event:", e);
    if (e.message) { 
        alert("Error:\n\t" + e.message + "\nLine:\n\t" + e.lineno + "\nFile:\n\t" + e.filename);
    } else {
        alert("Error:\n\t" + e.type + "\nElement:\n\t" + (e.srcElement || e.target));
    }
});

【讨论】:

    【解决方案3】:
    【解决方案4】:

    看看这个:http://www.javascriptkit.com/javatutors/error3.shtml。看起来签名是function(message, url, linenumber)

    【讨论】:

      【解决方案5】:
      <script>$(window).on("error", function(evt) {
      
      console.log("jQuery error event:", evt);
      var e = evt.originalEvent; // get the javascript event
      console.log("original event:", e);
      if (e.message) { 
          alert("Error:\n\t" + e.message + "\nLine:\n\t" + e.lineno + "\nFile:\n\t" + e.filename);
      } else {
          alert("Error:\n\t" + e.type + "\nElement:\n\t" + (e.srcElement || e.target));
      }
      });
      </script>
      

      【讨论】:

        猜你喜欢
        • 2020-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多