Метод отладки пользовательских скриптов в Chrome

Я попытался внести некоторые изменения в пользовательский скрипт, чтобы он работал в Chrome, но когда я перетаскиваю его в окно Chrome, чтобы установить, появляется диалоговое окно с надписью «Недопустимый заголовок сценария».

Я пытался использовать инструменты разработчика и встроенную консоль Javascript для отладки любых возникающих ошибок, но ничего не появляется для отображения какой-либо информации.

Console.app не содержит ничего значимого, кроме уже известного мне сообщения об ошибке.

[0x0-0x2d02d].com.google.Chrome: [346:1547:16686819618022:ERROR:extension_error_reporter.cc(55)] Ошибка расширения: неверный заголовок скрипта.

Как я могу разумно отладить это сообщение об ошибке и выяснить, что в заголовке неверно?

Я использую Chrome 15.0.861.0 на канале разработки под OS 10.7 Lion.


person VxJasonxV    schedule 28.08.2011    source источник
comment
Я не думаю, что для этого есть какие-либо инструменты. Если вы разместите здесь фактический код, возможно, кто-то сможет обнаружить ошибку. В противном случае вы бы поступили по старинке: взяли хороший сценарий и плохой сценарий, сравнили и разделили различия наполовину, пока проблема не будет определена.   -  person Brock Adams    schedule 28.08.2011
comment
разместите код на gist.github.com, пожалуйста   -  person erikvold    schedule 29.08.2011


Ответы (3)


Наконец я наткнулся на ответ на этот вопрос, забавно через отчет об ошибках Chromium. .

Как оказалось, ответ на мой вопрос был в (значительно кратком) пользовательском скрипте. Документация для Chrome.

С правилами @include в стиле Greasemonkey 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
person VxJasonxV    schedule 29.08.2011
comment
Это объясняет работу скрипта на дополнительных страницах, но не объясняет сообщение об ошибке. - person Brock Adams; 30.08.2011
comment
Chrome очень активно использует и повторно использует запросы одного и того же происхождения в целях безопасности. Я вполне мог бы использовать http://*/* (и да, мне пришлось бы указать //*/*), но если я укажу домен второго уровня, он ДОЛЖЕН быть чистым. Вы не можете использовать домен второго уровня. Это означает, что TLD тоже должен быть чистым. По сути, вы можете вести блог о субдомене, но если вы это сделаете, он должен быть разделен точкой перед указанием второго уровня и TLD. - person VxJasonxV; 30.08.2011
comment
glob* поддомен - person VxJasonxV; 20.09.2018

Тип:

 debugger;

Где-то в коде, и в этом месте появится веб-инспектор. Я ответил на аналогичный вопрос здесь Отладчик Chrome вводит javascript

person Mohamed Mansour    schedule 02.09.2011

Когда я получил то же сообщение об ошибке ( INVALID SCRIPT HEADER ), я понял, что это вызвано опечаткой между информацией заголовка // ==UserScript==.

неправильная строка

// @run-at document.end

исправлена ​​строка

// @run-at document-end
person d3n1c1d3    schedule 27.01.2013