Возможна ли замена строки на лету с помощью GreaseMonkey и Firefox

960
Gary M. Mugford

Я искал средства, чтобы остановить автозапуск видео в Brightcove в Firefox, и пришел к выводу, что это невозможно без внешнего программирования через что-то вроде Grease Monkey. Тем не менее, я не опытный в JavaScript, не говоря уже о GM. Поэтому я решил сначала спросить, возможно ли то, что я хочу сделать, или это глупое поручение.

Что я хочу сделать, так это запустить скрипт, специфичный для сайта, чтобы заменить строковое значение в коде этого сайта. В частности, я ищу что-то в стиле GM, которое бы делало это:

if site_domain = 'www.SiteWithAutoPlayVideos.com' then replace_all('<param name="autoStart" value="true" />', '<param name="autoStart" value="false" />'); 

Посмотрев в Super User все, что может касаться GreaseMonkey, я вижу, что в песочнице GM, выполняющий сценарии, должен оставаться отдельным по соображениям безопасности. Итак, я подозреваю, что меня ждет разочарование. НО, если это выполнимо, и кто-то здесь может подтвердить это, тогда я приложу все усилия, чтобы преодолеть кривую обучения и положить эту шумную небольшую проблему, чтобы положить конец.

Да, я пробовал Flash Block и FlashDisable для решения этой проблемы безрезультатно.

0
Вы можете изменить DOM из скрипта GM. Это конечно возможно, если немного не интуитивно понятно. Если вам нужна помощь в написании сценария, не стесняйтесь заходить в чат-рут-доступ (или JavaScript-чат в SO). В противном случае, я бы посоветовал вам вначале включить встроенную в Firefox функциональность click-to-play плагина, предполагая, что это флэш-видео. Bob 10 лет назад 0
Да. Greasemonkey может сделать это, но это может быть сложно. Вы захотите использовать MutationObserver для перехвата как родительского узла, так и, возможно, также. Brock Adams 10 лет назад 0
@BrockAdams Если узел-нарушитель не добавляется после начальной загрузки, его должно быть достаточно для удаления при загрузке страницы. Однако, достаточно ли это быстро, чтобы это произошло до того, как оно вступит в силу, под вопросом. Bob 10 лет назад 0
@Bob, используя `MutationObserver`, будет изменено до окончания загрузки видео. Если это достаточно хорошо, то: (1) перехватить родительский объект, (2) перегрузить родительскую загрузку (фиктивный URL должен это сделать), (3) исправить , (4) восстановить родительский узел. Brock Adams 10 лет назад 0
@Bob - проблема с плагином click to play заключается в том, что он спрашивает вас о сайте и после вашего подтверждения никогда не спрашивает снова. Если бы он спрашивал каждый раз, я мог бы жить с процессом двойного щелчка. Кроме того, на сайте есть несколько ссылок на страницы с проклятым видео с автоматическим воспроизведением. Как я уже говорил, я пробовал очевидные надстройки, блокирующие флеш-память, в том числе Click-Play Per-Element. Игрок (игрок Brightcove) непроницаем для них всех. Gary M. Mugford 10 лет назад 0
@BrockAdams (и Боб тоже), я думаю, ты указал мне в сторону библиотеки. Теперь пришло время покопаться в руководстве, найти рабочий пример и изменить его. Знание того, что MutationObserver вовлечен, вероятно, будет огромной проблемой. Спасибо вам обоим за то, что вы нашли время, чтобы дать мне надежду ... и немного работы, чтобы сделать [G]. Gary M. Mugford 10 лет назад 0
@ GaryM.Mugford Если вам интересно, вы можете использовать [мой сценарий] (https://gist.github.com/Elusive138/3797c97b074be7518629) в качестве примера. Он использует старые (теперь устаревшие) Mutation Events (в отличие от нового MutationObserver), но работает для своей цели. Кроме того, если блокировщики Flash не работают, возможно, это не Flash. Может быть другой плагин (Silverlight? VLC?) Или HTML5-видео (маловероятно, если он использует теги `param`). Click-to-play * снова спрашивает * для меня - возможно, у вас другие настройки. Это становится немного запутанным для комментариев, так что, опять же, не стесняйтесь заходить в [чат]. Bob 10 лет назад 0
@ Боб, спасибо за ваше предложение. Я быстро взглянул на твой сценарий, и он кажется мне немного не по центру. Это, несомненно, потому что я начинаю с нуля и просто не вижу связи в замене текста, а не объектов изображения, которые вы представляете. Но, как я уже сказал, я пока не вижу дерево в лесу. Спасибо за попытку. Что касается чата Super User, я еще больше заблудился там [G]. В конечном счете, хотя было бы неплохо покорить GreaseMonkey, я думаю, я заплачу программисту Javascript на Fiverr.com, чтобы написать этот для меня. Gary M. Mugford 10 лет назад 0
@ Боб, рассматриваемый сайт www.sportsnet.ca. Нажмите на любую ссылку, которая приведет вас на новую страницу, на которой есть проигрыватель Brightcove, и посмотрите на источник страницы. Щелкните правой кнопкой мыши на воспроизводимом видео, если оно запускается автоматически, и вы увидите меню Flash player. По крайней мере, так было с Pale Moon, Google Chrome и IE. Это, очевидно, какой-то пророческий игрок. Все, что я хочу сделать, это отключить автозапуск. Вздох. Но спасибо за поддержку и (несколько) предложений помочь. Gary M. Mugford 10 лет назад 0
@ Боб, ДЕЙСТВИТЕЛЬНО пытался изменить и использовать скрипт, заменив пространство имен и включив в него www.sportsnet.ca/* и заменив текст найти и заменить двумя строками из моего кода. Включил скрипт и включил GreaseMonkey, а затем зашел на сайт и нажал на ссылку, и появился автозапуск плеера ... и он запустился автоматически. Я думаю, что занял слишком много времени у всех на этом. Спасибо Бобу и Броку и извините, что потратили впустую ваше время. Gary M. Mugford 10 лет назад 0

0 ответов на вопрос