Мой очень простой скрипт 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().)

  1. сначала убедитесь, что скрипт даже срабатывает для рассматриваемой страницы.
    В то время как просмотр этой страницы,нажмите на треугольник вниз рядом со значком Greasemonkey (кроме того, вы можете открыть инструменты ->Greasemonkey в меню Firefox.) и убедитесь,что ожидаемое имя скрипта отображается и проверяется. Например:
    Greasemonkey states

  2. смотрите, если там есть ли соответствующие сообщения/ошибки на Firefox Консоли Браузера.
    Активировать консоль, нажав Ctrl ShiftJ, или эквивалент.

    вот скриншот, показывающий, как появляются сообщения и ошибки в Консоли Браузера -- вызвано как веб-страницей, так и скриптом Greasemonkey:
    Sample Browser console results

  3. открыть about:config поиск capability.policy.default.Window.alert и удалить или сбросить значение, если оно найдено.

  4. удалить Сценарий Greasemonkey.
  5. полностью очистить кэш браузера.
  6. завершение работы Firefox полностью. использовать Диспетчер Задач или эквивалент, чтобы убедиться, что в памяти нет потока/задачи/процесса Firefox.
  7. Перезапустить Firefox.
  8. установите сценарий Greasemonkey заново.
  9. если он все еще не работает, создайте новый Firefox профиль или другой компьютер в целом.

дополнительные вопросы:

  1. пожалуйста, укажите свой версии из трех вещей: (1) ОС, (2) Firefox, (3) Greasemonkey или Tampermonkey или Scriptish и т. д.

  2. @include * означает, что скрипт будет срабатывать для каждой страницы! это почти всегда плохая практика. (Там некоторые исключения, но ваш случай не один.)

  3. @namespace не контролирует, где выполняется страница. единственное @namespace позволяет нескольким сценариям иметь одно и то же имя (до тех пор, пока их @namespaces разные). См.на @namespace документация.

  4. избегайте использования alert() для отладки. Это раздражает и может замаскировать проблемы со временем.
    использовать console.log(). вы можете см. результаты и полезные сообщения об ошибках (подсказка, Подсказка) на Консоли Браузера.

  5. Google почти всегда использует/перенаправляет на www.google.com (для английских пользователей США). Итак,// @include  https://google.com почти никогда не будет работать, как вы хотите.

    рекомендуем вам использовать:

    // @match  *://www.google.com/*
    

    в качестве отправной точки.

    в Firefox Greasemonkey вы также можете использовать magic .tld для поддержки наиболее Международные домены Google, например:

    // @include  http://www.google.tld/*
    // @include  https://www.google.tld/*
    

    используйте обе строки. Обратите внимание, что это не выполняется так же, как @match строка делает. Итак, если вы заботитесь только об одной нации / локале, просто используйте @match.


собираем все вместе:

  1. удалите скрипт.
  2. Перезапустить Firefox.
  3. установить этой сценарий:

    // ==UserScript==
    // @name        Google Hello
    // @namespace   John Galt
    // @description Basic Google Hello
    // @match       *://www.google.com/*
    // @version     1
    // @grant       none
    // ==/UserScript==
    
    console.log ("Hi Google!");
    
  4. посетить Google и обратите внимание на результаты на консоли браузера Firefox.

  5. если все еще есть проблема, выполните все шаги отладки выше.
  6. если все еще есть проблема, откройте новый вопрос и поставьте все следующее:
    1. три версии, упомянутые выше.
    2. на соответствующей ошибки и сообщения, которые вы получаете на Консоли Браузера.
    3. точный код и шаги, необходимые для воспроизведения ошибки. сделать MCVE для этого!
    4. краткий обзор того, что вы пытались решить эту проблему.