Greasemonkey: Пользователь должен иметь возможность контролировать порядок выполнения скрипта.

Созданный на 15 нояб. 2017  ·  10Комментарии  ·  Источник: greasemonkey/greasemonkey

Сортировка «Порядок выполнения» - это функция, которую мне больше всего не хватает в устаревшем диалоговом окне «Управление» с полной вкладкой.
В настоящее время (в GM 4.0) кажется, что скрипты выполняются так, как они перечислены во всплывающем окне, то есть в алфавитном порядке.
Поскольку такая сортировка больше не доступна, больше нет быстрого способа разрешать конфликты пользовательских скриптов.


Для справки я цитирую вики-страницу (теперь удаленную)

_ Порядок сценариев_

_Сценарии могут отображаться в следующем порядке: _

  • _Status - Скрипты отсортированы по статусу активации: включен или выключен, затем имя. _
  • _Name - скрипты упорядочены в алфавитном порядке по имени независимо от статуса.
  • _ Порядок выполнения - сценарии упорядочены по индексу выполнения.

_Этот последний порядок важен для пользовательских скриптов, которые конфликтуют друг с другом. Изменяя порядок скриптов, можно разрешить конфликт. Вы можете изменить порядок, щелкнув правой кнопкой мыши пользовательский сценарий и выбрав одно из действий: Execute first , Execute sooner , Execute later или Execute last ._

Самый полезный комментарий

Это действительно функция 3.x, отсутствующая в 4.x.

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

Все 10 Комментарий

Это действительно функция 3.x, отсутствующая в 4.x.

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

Что, если бы в исходном коде скрипта у нас была функция // <strong i="5">@priority</strong> (int) , или, возможно, нам следует назвать это уровнем выполнения, поскольку приоритет может быть пропущен
каждый разрыв может быть запущен в одно и то же время или почти одновременно с помощью асинхронных функций
мы, вероятно, должны также поддерживать отрицательные значения

В отличие от уровней выполнения UNIX, для которых существует своего рода естественный порядок, порядок выполнения сценариев кажется более произвольным. Я думаю, это должно быть на усмотрение пользователя. Приоритет по умолчанию, который исходит из тега в сценарии, неплохая идея, но должна быть возможность переопределить порядок, как это было в предыдущих версиях GM.

Я согласен с этим, но мы могли бы редактировать уровень запуска / приоритет сценариев из источника, если это необходимо; Я предполагаю, что это было бы проще реализовать, и на этом этапе пользовательский интерфейс мог бы быть построен вокруг него

Проголосуйте и за это тоже. Некоторые из моих скриптов нужно запускать в определенном порядке и ломаться, если они запускаются не в свое время.
Я тоже думаю, что это должно быть на усмотрение пользователя, чтобы решить этот порядок. Пользовательский интерфейс может ссылаться на своего рода директиву «порядок» / «уровень выполнения» из сценария, но последнее слово должно быть пользователем. Я даже могу представить себе пару скриптов, которые намеренно ведут себя по-разному при запуске 1-2 или 2-1, поскольку оба относятся к DOM страницы, которая ими изменена.

ИМХО уровень выполнения - это не то, что нам здесь нужно.
Я думаю, что в большинстве случаев речь идет о выполнении сценария A перед сценарием B.
Это (относительное) ограничение. Уровень выполнения - это абсолютная мера. Не адекватно.
Кроме того, ограничение довольно скудное. Все, что вам нужно, это "раньше" / "позже",
а может, просто для удобства "первый" / "последний" ...

Это (строго) не свойство самого скрипта, поэтому он не должен быть заголовком @tag встроенным в исходный код. Это симптом некоторой комбинации сценариев, при которой одно изменение нарушает работу другого (но не наоборот), поэтому другой должен выполняться первым.

Будет ли эта функция когда-нибудь использоваться? Мне его не хватало с тех пор, как вышла 4.x, и мне пришлось делать некоторые плохие обходные пути в моих сценариях, чтобы они выполнялись в правильном порядке на данный момент.

... некоторые плохие обходные пути ...

Каков был обходной путь и почему он был плохим?

Я помню, как создавал невидимый div с одним скриптом и устанавливал таймер в другом, который должен был проверить, существует ли уже div. Или это было глупо?

Я не думаю, что можно установить глобальные переменные с помощью Greasemonkey и сделать их доступными для других скриптов? И даже это потребует установки таймера, не так ли?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги