Google chrome extension 在Chrome中调试用户脚本的方法

Google chrome extension 在Chrome中调试用户脚本的方法,google-chrome-extension,userscripts,Google Chrome Extension,Userscripts,我试图对用户脚本进行一些修改,使其能够在Chrome下工作,但当我将其拖到Chrome的窗口中进行安装时,会弹出一个对话框并显示“无效脚本头” 我曾尝试使用开发人员工具和内置Javascript控制台来调试发生的任何错误,但似乎没有列出任何信息 Console.app没有列出任何有意义的内容,除了我已经知道的相同错误消息 [0x0-0x2d02d].com.google.Chrome:[346:1547:16686819618022:错误:扩展名\u ERROR\u reporter.cc(55

我试图对用户脚本进行一些修改,使其能够在Chrome下工作,但当我将其拖到Chrome的窗口中进行安装时,会弹出一个对话框并显示“无效脚本头”

我曾尝试使用开发人员工具和内置Javascript控制台来调试发生的任何错误,但似乎没有列出任何信息

Console.app
没有列出任何有意义的内容,除了我已经知道的相同错误消息

[0x0-0x2d02d].com.google.Chrome:[346:1547:16686819618022:错误:扩展名\u ERROR\u reporter.cc(55)]扩展名错误:无效的脚本头

如何合理地调试此错误消息,并找出报头不正确的原因


我在开发频道的OS 10.7 Lion下使用Chrome 15.0.861.0。

我终于通过一个有趣的网站偶然找到了这个问题的答案

事实证明,我的问题的答案在(非常简短的)页面上

使用Greasemonkey style@include rules,Chrome不可能知道脚本将在哪些域上运行(因为google.*也可以在google.evil.com上运行)。正因为如此,Chrome只告诉用户这些脚本将在所有域上运行,这有时比必要的更可怕。通过@match,Chrome将告诉用户用户脚本将在哪些域上运行

事实证明,我一直在使用
@match http://*musicbrainz.org
试图匹配
www.musicbrainz.org
以及
musicbrainz.org
,但根据引用的文本,这并不能避免您意外匹配
evilmusicbrainz.org
。因此,我的解决方案是使用两行:

@match http://*.musicbrainz.org
@match http://musicbrainz.org
类型:


代码中的某个位置,Web检查器将在该位置弹出。我在这里回答了类似的问题

当我收到相同的错误消息(无效的脚本头)时,我发现它是导致//==UserScript==HEADER信息之间输入错误的原因

错误线路

// @run-at document.end // @run-at document-end //@run at document.end 修正行

// @run-at document.end // @run-at document-end
//@run at document endI我认为没有任何工具用于此。如果您在这里发布实际代码,可能会有人发现错误。否则,你会用老式的方法:用一个好的脚本和一个坏的脚本,比较并一半分割差异,直到问题确定。请发布代码。这会解释脚本在额外页面上运行,但不会解释错误消息。Chrome对“同源”有很强的使用和重用性出于安全目的的请求。我可以很好地使用
http://*/*
(是的,我必须指定
//*/*
),但是如果我指定第二级域,它必须是干净的。您不能在二级域中全局访问。这意味着TLD也必须清洁。基本上,你可以写一个子域名,但是如果你这样做了,在指定第二个级别和TLD.glob*子域名之前,它必须用点来分隔