2011-08-28 12 views
5

我試圖對用戶腳本進行一些修改以使其能夠在Chrome下工作,但是當我將其拖入Chrome窗口以便安裝時,會彈出一個對話框並顯示'Invalid腳本標題'。在Chrome中調試用戶腳本的方法

我試過使用開發工具和內置的Javascript控制檯來調試發生的任何錯誤,但沒有任何內容出現列出任何信息。

Console.app沒有列出任何有意義的東西,除了我已經知道的同樣的錯誤信息。

[0x0-0x2d02d].com.google.Chrome: [346:1547:16686819618022:ERROR:extension_error_reporter.cc(55)] Extension error: Invalid script header.

我該如何合理地調試這個錯誤信息並弄清楚標頭是不正確的?

我在OS 10.7 Lion下的開發通道上使用Chrome 15.0.861.0。

+1

我不認爲* *有這方面的任何工具。如果你在這裏發佈實際的代碼,有人可能會發現錯誤。否則,你會用老式的方式來做:用一個好的腳本和壞的腳本,比較和分裂差異,直到問題確定。 –

+0

在http://gist.github.com/發佈代碼請 – erikvold

回答

5

我終於無意中通過Chromium Bug Report偶然發現了這個問題的答案。

事實證明,我的問題的答案在(非常簡短)Userscript Documentation for Chrome頁面。

With Greasemonkey-style @include rules, it is not possible for Chrome to know for certain the domains a script will run on (because google.* can also run on google.evil.com). Because of this, Chrome just tells users that these scripts will run on all domains, which is sometimes scarier than necessary. With @match, Chrome will tell users the correct set of domains a user script will run on.

事實證明,我曾試圖以匹配www.musicbrainz.org以及musicbrainz.org,但每個引用的文字被使用@match http://*musicbrainz.org,這並不意外匹配evilmusicbrainz.org救你。所以,我的解決方案是使用兩條線:

@match http://*.musicbrainz.org和;
@match http://musicbrainz.org

+0

這將解釋在額外頁面上運行的腳本,但它不能解釋錯誤消息。 –

+0

Chrome爲了安全目的,對「同源」請求進行了非常強大的使用和重用。我可以很好地使用'http:// */*'(是的,我必須指定'/ * * *'),但是如果我指定了第二級域,它必須是乾淨的。您不能在第二級域中進行全局更新。這意味着TLD也必須是乾淨的。基本上,您可以發佈子域名,但如果您這樣做,則必須在指定第二級和頂級域名之前用點分隔。 – VxJasonxV

1

我想通了,而我得到了相同的錯誤消息(無效的腳本標頭),它accoured的 // == == UserScript頭之間的信息輸入錯誤的原因。

wronge線

// @run-at document.end

糾正線

// @run-at document-end
相關問題