2009-09-11 1 views
27

Я пытаюсь запустить скрипт Greasemonkey для работы на странице. Но это не так.Как определить, почему сценарий Greasemonkey не запущен

Как вы отлаживаете скрипты?

Каковы минимально возможные детские шаги, чтобы начать новый сценарий Greasemonkey?

+1

BTW Я решил свою конкретную проблему. Оказалось, что «включенные страницы» в диалоговом окне «управлять пользовательскими скриптами» включали «lavpriskoekken.dk/*», а не «* lavpriskoekken.dk/*» –

+4

То же самое происходит со мной. Hello World будет работать правильно, тогда я добавлю строку и перестанет работать. Если я возьму это, как обратно, он никогда не будет работать снова. Сбой в работе greasemonkey или перезагрузка интерпретатора? Как ты это делаешь? – 2011-02-09 21:11:34

+0

Вам не нужно «перезагружать» Greasemonkey. Он будет пытаться запускать ваш скрипт каждый раз, когда страница, соответствующая вашим включенным страницам, загружается в браузер. Таким образом, способ «перезагрузки» - нажать «Обновить» в вашем браузере. –

ответ

6

вы можете писать журналы везде в ваших сценариях, чтобы получить лучшие следы того, что если делается в них:

GM_log("Hello, World!"); 

http://wiki.greasespot.net/GM_log

Подробнее: http://wiki.greasespot.net/Greasemonkey_Manual:Other_Useful_Tools#JavaScript_Console

Еще один совет: Возьмите посмотрите всю вики wiki greasemonkey. У них там много хорошего: http://wiki.greasespot.net/Main_Page

+9

Спасибо, но в то время, когда мне это было нужно, мой скрипт даже не работал - даже не мог запускать такие утверждения, как ' предупреждение ("привет"); '. Поэтому я надеюсь создать контрольный список с шагами, которые вы можете проверить, не работает ли ваш скрипт. –

+0

... Полезный совет! –

+2

Начиная с версии Greasemonkey 3.2 (Firefox 38, OS X) 'GM_log', похоже, не работает. –

5

В Firefox откройте «Инструменты»> «Консоль ошибок» и просмотрите его при загрузке страницы. Если вы перегружены Warnings со страницы, вы можете отфильтровать «Ошибки», которая по-прежнему часто подчеркивает проблему с вашим скриптом.

+1

Это должно быть так в FF.Однако в наши дни некоторые ошибки UserScript (например, сценарий не удается скомпилировать) не отображаются в веб-консоли ('Ctrl + Shift + K'), а не в консоли браузера (' Ctrl + Shift + J'). Похоже, нам нужно переключиться на Chrome для отладки GM-скриптов. – Tino

5

Работает сценарий greasemonkey; Я добавил строку; он прекратил работать; Я удалил линию; он все еще не работает.

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

На макинтош, мой updater.php был: /Users/csimmons/Library/Application Support/Firefox/Profiles/81ri7k71.default/gm_scripts/Extended_LoU_Tweak

Вы можете быть в состоянии найти подобный updater.php файл в Firefox профиль по умолчанию gm_scripts/ каталогов.

30

Когда я начинал с пользовательских скриптов, моя первая ошибка не использовала подстановочные знаки.

// Broken: 
// @include  https://www.example.com/ 

// Working: 
// @include  https://www.example.com/* 

Это самый простой способ для сценария не применять и, следовательно, не запускаться вообще. Кроме того, обязательно проверьте наличие синтаксических ошибок; некорректная точка с запятой может помешать анализу сценария, и, следовательно, он игнорируется.

+3

Да, это решило мою проблему! – Germstorm

+0

Это сработало для меня, но это просто расплывчато! Я создаю скрипт для FB, и у меня был '@include https: // www.facebook.com', и он не загружался, хотя точный адрес -' https: // facebook.com'. Таким образом, «шаблон» соответствует даже тогда, когда нет косой черты, но он не соответствует, когда строка равна 100%. Weird. – MarioDS

+4

Чтобы быть справедливым, www.facebook.com! = Facebook.com. –

2

Кроме того, синтаксис @include должен иметь только один соответствующий шаблон. Если вы хотите другой, добавьте еще одну строку @include.

4

Для меня была синтаксическая ошибка в скрипте, и Greasemonkey не выдал сообщение об ошибке. Копирование вставки скрипта в консоль JS раскрыло секрет.

1

У меня тоже была эта проблема; это решение для меня:

  • Проверить (и Изменить каверзный) часть кода я работал, когда это произойдет

  • удалить и переустановить GreaseMonkey

  • затем я получил реальный отчет об ошибке

EDIT: Сегодня проблема возникает чаще, чем обычно (ne w release?) Похоже, что веб-инструменты Firefox сражаются с двигателем greasemonkey или JS для сообщений об ошибках.

Итак, когда вы где-то смотрите (ctrl + alt + k), сообщение об ошибке появляется где-то в другом месте (попробуйте открыть другую консоль), это похоже на забавную игру.

4

Убедитесь, что Greasemonkey включена в первую очередь:

0

Если URL страницы устанавливается с помощью Javascript, а не по навигации (например, Instagram давая своим всплывающие окна на постоянную ссылку URL), Greasemonkey покажет скрипт, но он на самом деле не запустится. Попробуйте перезагрузить URL-адрес и посмотрите, действительно ли он идет на одну страницу. Если нет, вам придется сопоставить URL главной страницы, а не всплывающий URL.