Мой очень простой скрипт Greasemonkey не запущен?
У меня проблемы с этим очень простым скриптом Greasemonkey, скорее всего с конфигурацией метаданных.
Вот полный источник основного файла
// ==UserScript==
// @name Google Hello
// @namespace https://google.com
// @description Basic Google Hello
// @include *
// @version 1
// ==/UserScript==
alert("hi google!");
Этот скрипт должен запускаться, когда я захожу на Google.com, но предупреждение не появляется. В чем проблема?
Я пытаюсь запустить этот скрипт в Ubuntu с Firefox.
1 ответ
Если alerts()
не стреляют, скорее всего, вы нажали Firefox Prevent this page from creating additional dialogs
или установите предпочтения браузера (более старые версии Firefox), или Firefox может стать нестабильным в памяти.
Универсальные шаги отладки Greasemonkey:
(С одним шагом добавлено для проблем с alert()
.)
Сначала убедитесь, что скрипт запускается даже для рассматриваемой страницы.
Просматривая эту страницу, нажмите на треугольник вниз рядом со значком Greasemonkey (в качестве альтернативы вы можете открыть Tools -> Greasemonkey в меню Firefox.) И убедитесь, что ожидаемое имя сценария появляется и проверяется. НАПРИМЕР:
Посмотрите, есть ли какие-либо соответствующие сообщения / ошибки в браузерной консоли Firefox.
Активируйте консоль, нажав Ctrl Shift J или ее эквивалент.Вот снимок экрана, показывающий, как сообщения и ошибки появляются в консоли браузера - вызванные как веб-страницей, так и скриптом Greasemonkey:
открыто
about:config
, ищиcapability.policy.default.Window.alert
и удалите или сбросьте значение, если оно найдено.- Удалите скрипт Greasemonkey.
- Полностью очистить кеш браузера.
- Выключите Firefox полностью. Используйте диспетчер задач или эквивалентный ему, чтобы убедиться, что в памяти нет потока / задачи / процесса Firefox.
- Перезапустите Firefox.
- Установите скрипт Greasemonkey заново.
- Если это все еще не работает, создайте новый профиль Firefox или попробуйте другой компьютер вообще.
Дополнительные вопросы:
Пожалуйста, предоставьте свои версии трех вещей: (1) ОС, (2) Firefox, (3) Greasemonkey или Tampermonkey или Scriptish и т. Д.
@include *
означает, что скрипт будет срабатывать для каждой страницы! Это почти всегда плохая практика. (Есть некоторые исключения, но ваш случай не один.)@namespace
не контролирует, где страница работает. Единственная вещь@namespace
позволяет разрешить нескольким скриптам иметь одно и то же имя (если их@namespace
с разные). Увидеть@namespace
документацияИзбегать использования
alert()
для отладки. Это раздражает и может маскировать проблемы со временем.
использованиеconsole.log()
, Вы можете увидеть результаты и полезные сообщения об ошибках (подсказки, подсказки) на консоли браузера.Google почти всегда использует / перенаправляет на
www.google.com
(Для англ. Пользователей США). Так,// @include https://google.com
почти никогда не будет работать так, как вы хотите.Рекомендую использовать:
// @match *://www.google.com/*
в качестве отправной точки.
В Firefox Greasemonkey вы также можете использовать магию
.tld
для поддержки большинства международных доменов Google, например:// @include http://www.google.tld/* // @include https://www.google.tld/*
Используйте обе строки. Обратите внимание, что это не так хорошо, как
@match
линия делает. Итак, если вы заботитесь только об одной нации / локали, просто используйте@match
,
Собираем все вместе:
- Удалите ваш скрипт.
- Перезапустите Firefox.
Установите этот скрипт:
// ==UserScript== // @name Google Hello // @namespace John Galt // @description Basic Google Hello // @match *://www.google.com/* // @version 1 // @grant none // ==/UserScript== console.log ("Hi Google!");
Посетите Google и запишите результаты в браузерной консоли Firefox.
- Если проблема не устранена, выполните все шаги отладки, описанные выше.
- Если проблема не устранена, откройте новый вопрос и укажите ВСЕ следующее:
- Три версии, упомянутые выше.
- Соответствующие ошибки и сообщения вы получаете на консоли браузера.
- Точный код и шаги, необходимые для дублирования проблемы. Сделайте MCVE для этого!
- Краткое описание того, что вы пытались решить проблему.