2011-08-28 9 views
5

ユーザースクリプトをChromeで動作させるためにユーザースクリプトを変更しようとしましたが、インストールするためにChromeのウィンドウにドラッグするとダイアログが表示され、 '無効スクリプトヘッダー」。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ライオンの下で、Devチャンネルにクローム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に一致するからあなたを保存しません引用されたテキスト、あたりされていました。ですから、私の解決策は2つの行を使用することでした:

@match http://*.musicbrainz.orgそして;
@match http://musicbrainz.org

+0

これは、余分なページで実行されているスクリプトについて説明していますが、エラーメッセージについては説明していません。 –

+0

Chromeは、セキュリティ目的で「同じ起源」のリクエストを非常に強力に使用し、再利用しています。私は 'http:// */*'をうまく使うことができます(もちろん、 '// */*'を指定しなければなりません)。しかし、第2レベルのドメインを指定するなら、それはきれいでなければなりません。あなたは、セカンドレベルドメインにグロブすることはできません。これは、TLDがあまりにもきれいであることを有することを意味します。基本的に、サブドメインのブログを書くことはできますが、そうした場合は、ドットで区切って2番目のレベルとTLDを指定する必要があります。 – VxJasonxV

3

タイプ:

debugger; 

コードのどこかに、およびWeb Inspectorは、その場所にポップアップ表示されます。私はそれが // == UserScript ==ヘッダー情報間のタイプミスの原因をaccouredと同じエラーメッセージ(INVALID SCRIPT HEADER)を持っている間、私は考え出しここChrome debugger inject javascript

1

を同様の質問に答えています。

wrongeライン

// @run-at document.end

修正ライン

// @run-at document-end
関連する問題