window.onerror和[object Event]

时间:2014-04-02 08:58:04

标签: javascript

我的网站上有一些错误记录代码可以将Javascript错误保存到文件中,所以稍后我可以查看一些浏览器中的代码是否存在问题。

有时我会收到一条错误消息,例如消息:[object Event] url:undefined line:undefined 所以我不知道错误的位置。

如果是[对象事件],如何从消息获取更多信息,以便我可以知道错误来自哪个文件和行号。

window.onerror = error;

function error(message, url, line) {

   // sometimes message is [object Event]

}

我认为是这样的。

window.onerror = error;

function error(message, url, line) {

   // sometimes message is [object Event]


    if (typeof message === 'object') {

        message = message
            + ' + '
            + message.url
            + ' + '
            + message.lineno;

    }

}

尝试这一点,但我得到未捕获的TypeError:对象#没有方法'序列化'

if (typeof message === 'object') {

   message = JSON.serialize(message);

}

使用JSON.stringify(message)我得到未捕获的TypeError:将循环结构转换为JSON

if (typeof message === 'object') {

   message = JSON.stringify(message);

}

2 个答案:

答案 0 :(得分:0)

如果在JS中获得类似[someting Something]的内容,通常意味着它是一个对象。您可以执行console.log(message)并检查对象的内容。它看起来像

{
  somethingHere : 'data',
  anotherHere : 'more data'
}

要访问它们,您可以使用点表示法执行此操作:

theObject.somethingHere //data

在你的情况下,就像这样,something是对象的一个​​键。

message.something

答案 1 :(得分:0)

您在哪个浏览器或浏览器上看到此[Event object]消息?检查对象内容的一种可能方法是:

var messageString = '';
for (var x in message) {
  if (messageString) messageString += ', ';
  messageString += x + ': ' + message[x];
}
message = '{' + messageString + '}';

如果您可以为此错误消息提供任何类型的可重现测试用例,包括发生的浏览器版本,这将有很大帮助。