2012-07-21 181 views
4

我遇到了一个问题,导致我完全崩溃。我的Chrome扩展没有显示控制台错误,但它显示日志

我的Chrome扩展程序不向开发人员工具控制台报告任何错误。但是:它仍然会写日志,工作得很好,页面上的非扩展脚本仍然会报告它们的错误。

我见过一些单词,说明扩展的错误可以显示在popup.html的DevTools窗口中,但是我的扩展没有(也不能通过设计,它用于解析其他页面)使用那个popup.html在所有。

最糟糕的是甚至没有显示扩展名的语法错误(!)。我会是无限的,永远感激,如果你能给我这个问题的解决方案,因为它是在屁股巨大的痛苦调试没有语法错误通知的扩展:(

UPD:

由于它的出现,问题是,只有在一个网页我看不到的错误:在其他网页我的脚本运行在那里我可以看到console.errors()

罗布W,抱歉,但是那并不是” t回答我的问题。我可以用用console.log(),但我不能用请参阅console.error()的输出,这两个都来自脚本中的实际错误以及我自己的console.error()调用。我的脚本不使用后台脚本,只对特定网页的某些脚本,如下面的manifest.json的:

{ 
    "manifest_version": 2, 
    "permissions": ["tabs", "http://*/*", "https://*/*", "file:///*/*"], 
    ... 
    "content_scripts": [{ 
      // I can see my errors here... 
     "matches": ["http://www.site.ru/*type=cheats*"], 
     "js": ["cheats.js"] 
    },{ 
      // and here... 
     "matches": ["http://www.site.ru/bitrix/admin/iblock_element_edit.php*type=games*"], 
     "js": ["idb.js","data.js","framework.js","script.js","wikipic.js"], 
     "css":["styles.css"], 
      "all_frames": true 
    },{ 
     "matches": ["http://www.site.ru/bitrix/admin/iblock_element_search.php*"], 
     "js": ["search.js"] 
    },{ 
      // >>>> But not here! <<<< 
     "matches": ["http://www.site.ru/cheats/*"], 
     "js": ["keys.js", "adhocparse.js", "resumeer.js", "ground.js"], 
     "css": ["resumeer.css"] 
    }] 
} 

UPD 2:我试过这段代码:

console.log(console, console.log, console.error); 
console.error("Error one"); 
throw new Error("Error two"); 

我有这样的输出:

Console function log() { [native code] } function error() { [native code] } 
Error one 

所以:console.error的作品,但所有抛出的错误(如语法错误)在某种程度上捕捉全局。这很奇怪,因为:

  1. 我在我的扩展中没有任何捕获;
  2. 页面本身仍然会产生很多错误(但它们在调用我的扩展代码之前发生)以及很多GET错误(即使在调用我的扩展代码后仍无法获取文件,但它们似乎无法捕捉,我猜)

那么,什么可以捕捉错误全球?

看来,这不是一个Chrome扩展问题,添加标签JavaScript。

+0

欢迎堆栈溢出。这个问题早已被问到,你可以在这篇文章中找到问答:[在Chrome扩展中,从background.js中读取控制台消息的位置?](http://stackoverflow.com/questions/10257301/where-to-读控制台的消息从 - 背景-JS-IN-A - 铬 - 扩展名)。 – 2012-07-21 08:57:58

+0

如果你在两个日志调用之间夹入一个错误调用,比如'log('foo');错误( '巴');日志( '巴兹');'?你看到两个日志,而不是错误?或者你只看到第一个日志?有可能''console.error'已被重写,或某种'try' /'catch'操作正在捕捉你的错误,从而阻止它被显示。 – apsillers 2012-07-21 21:10:03

+0

然后只显示第一个日志,之后没有任何内容。它认为它与console.error无关,请参阅更新2。 – gvlasov 2012-07-21 21:40:19

回答

0

在我想为有这样的代码引起这种行为写扩展建立的网站:

window.onerror 
function stopError(){return true;} 
相关问题