Greasemonkey: Firefox < FF57 (например, FF56 и 52ESR) не должен автоматически «обновляться» до Greasemonkey 4.

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

strict_min_version в GM 4.1 равен 52.0 . Это приводит к тому, что люди, использующие версии Firefox, которые поддерживают устаревшие расширения (например, FF56 и 52ESR), «обновляются» до 4.1. Многие люди, которые используют FF 52ESR или продолжают использовать FF55/56, делают это специально, чтобы иметь возможность продолжать использовать устаревшие расширения.

Устаревшая версия Greasemonkey гораздо более функциональна, чем версия 4.x, и так будет всегда. Люди, использующие версии Firefox < FF57, не должны автоматически «обновляться» до Greasemonkey 4.x.

Таким образом, manifest.json должен иметь:

"strict_min_version": "57.0"

Хотя пользователи могут отключить автоматические обновления для GM или расширений в целом (т. е. этот параметр strict_min_version можно обойти для каждого профиля отдельно), GM4 на самом деле не является «обновлением». Большинство пользователей считают это понижением. Пользователи не должны автоматически обновляться до GM4, если использование GM4 не требуется из-за отсутствия поддержки устаревших расширений в версии Firefox, которую они используют.

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

Я думаю, что вы должны установить нужную версию Greasemonkey, а затем отключить автоматическое обновление.

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

Я думаю, что параметр минимальной версии является артефактом периода времени, в течение которого версия 3.x имеет встроенное расширение WebExtension для облегчения переноса сценариев. Без его понижения я не верю, что аддон установится правильно.

4.1 была выпущена с более низкой минимальной версией, _oops?_. Я не думаю, что это было сделано для того, чтобы «преднамеренно заставить» людей перейти на 4.x, и враждебность в посте неуместна.

@Sxderp Никакой враждебности не предполагалось. Мне жаль, что это прозвучало именно так. Даже перечитывая то, что я написал, я не совсем уверен, какую часть (части) вы считаете враждебной. Итак, я отредактировал его, догадавшись (частично), что вы считаете нежелательным.

Обратите внимание: хотя я и сказал «принудительно» (что имел в виду только как описание того, что происходит с пользователями), я не сказал «преднамеренно принудительно» (что указывало бы на то, что я приписываю какое-то намерение, стоящее за настройкой, что я и имел в виду). не пытаюсь делать). [Вы заставили меня задуматься о себе. Я не думаю, что сказал «преднамеренно заставлять», но теперь, когда я отредактировал исходный комментарий, я не могу проверить его на 100%, потому что как автор сообщения я не получаю электронное письмо с содержанием. Если я сделал, я извиняюсь. Это не было предназначено.]

Примечание. Хотя я испытываю негативные чувства к Mozilla в связи с переходом только на WebExtensions, я чувствую, что люди, связанные с GM, хорошо справляются с ситуацией, в которую их поставила Mozilla. Это включает в себя необходимость иметь дело с большим количеством людей, которые обвиняют авторов расширений в вещах, в которых полностью виновата Mozilla.

Eyep, я "заморозил" свой FF на v56, и теперь с GM4.1 я получаю некоторые непонятные ошибки, такие как "Error: Permission denied to access property "nodeType"" в очень простых скриптах.

Я получаю некоторые неясные ошибки, такие как

Пользовательские скрипты запускаются в контексте «контентного скрипта». Если объекты/функции объявлены в этом контексте, их необходимо клонировать в окно, прежде чем окно сможет получить к ним доступ. Mozilla реализовала эту функцию безопасности, и она предотвращает утечку в область страницы.

https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#Sharing_content_script_objects_with_page_scripts

@Sxderp да, я уже читал в примечаниях к обновлению, что unsafeWindow работает как-то по-другому, и нужно использовать exportFunction() or cloneInto() и ссылаться на ту же статью, что и вы (в которой объясняется, как писать расширения, а не пользовательские скрипты )). Никто не приводит примеров, как это сделать в пользовательских скриптах. Но это не относится к делу. Дело в том, что FF<=56 не страдает от всего этого торможения, поэтому нет причин его форсировать.

Никто не приводит примеров, как это сделать в пользовательских скриптах.

Почти точно так же. Если кто-то говорит «скрипт контента», замените его на «пользовательский скрипт». Действуйте как обычно.

Например, вот то, что я опубликовал некоторое время назад.

Кроме того, если вы используете window.eval() , аргумент будет выполняться непосредственно в области страницы без необходимости экспортировать.

благодаря. что касается eval() — eval — это зло, и первое правило использования eval — «не использовать eval».

@Spown IMO, exportFunction() и cloneInto() следует избегать, поскольку они предназначены только для Firefox. Существенным преимуществом как пользовательских скриптов, так и WebExtensions является то, что их можно запускать в различных браузерах. Существует множество способов выполнения кода в контексте страницы. То, как я это делаю как в пользовательских сценариях, так и в сценариях контента, представляет собой функцию executeInPage() , которую вы можете найти в этом ответе на Stack Overflow . Он позволяет передавать параметры вызываемой функции, клонируя эти параметры в контекст страницы. С помощью простой функции, которая присваивает значение параметра, переданного переменной в контексте окна (например, window[variableName] ), вы можете легко делать то, что делает cloneInto() .

Он не такой гибкий, как cloneInto() , так как обрабатывает только Object , Array , function , RegExp , Date и/или другие примитивы ( Boolean , null , undefined, Number и String , но не Symbol ).

@Sxderp все это может быть правдой, но мне все равно, поскольку я предпочитаю не участвовать во всем этом, не обновляясь до FF> 56. Но он все еще просачивается, как в этом случае.

Кстати, попытка повторно использовать jQuery страницы в моем скрипте (который возвращает вышеупомянутую ошибку), как вы сделали в своем примере, по-прежнему дает ту же ошибку. НВМ

Я думаю, что вы должны установить нужную версию Greasemonkey, а затем отключить автоматическое обновление.

Если я перейду на Greasemonkey 4, можно ли установить Greasemonkey 3, чтобы перейти на более раннюю версию и продолжить использовать ее, если я захочу? Или Greasemonkey 4 вносит необратимые изменения?

@garyking , вы сможете без проблем понизить версию. Файлы скрипта должны остаться.

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