Страницы: 1
Toggle GIF Animation 0.2.0 (2013-06-14)
Автор: Infocatcher
Описание:
Кнопка выключает/включает GIF-анимацию на текущей странице
Установить:
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EToggle%20GIF%20Animation%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABblBMVEUAAADq6urr6+vm5ubnuaPgTC2enp7l5eWbm5vo6Ojp6emampr0Zkf2WjjupJPwUjCYmJjp6emZmZnpSSeXl5fp6enoVzjiPx2VlZXn5+fkTi7bNhSUlJTnVjfdORfVLgxtbW2tra3W1tbjUDHaNhTLLQ16enqjo6OkpKSpqamqqqqqqqqqqqqqqqq3dWjBSjLJKwzJKwvARCu1aVqkpKSkpKTORBH////j4+Pe3t7g4ODa2tr7cVLo6OjNNBXc3Nzp6eni4uLf39/n5+fhTi/8clPdSSvZ2dnoWDnh4eHdZi3Y2Nj4bU/ONRbvqJj8bk3ouK3sXT7X19fk5OT7gWLgTS/uYULdTiHtWTHYpJnVPiDoZEbAWEH8gWLq6urONBb1lH7qhW/gYiXnuaPUhnfQOBnrXD3d3d3bYSa7Lgq8Lwrm5ub4d1ntvbLgdV7fc13b29vbcVzoVznZRSfFOQ2dnZ36Yj/LYkv7cVO8MAsi43WXAAAANnRSTlMA19fn/v0e5zfnrTf9UPKjN9I35jfn/eY35/ajN/bmUAE4/vnpfQMTZpKkrLa80ef4996yciec+O5uAAAA5ElEQVR4Xj3M1XLDMBBA0VVTJ2nKzMzMIrPDjGVmZv77rt2Z3oeV9oxGAOBvJoRUuRESAqhO/Xd2aLUD0GvGWIqd4qSWVYPAKMa8Q9c98NZ394Ue7kag7pXdspsfGr7z4af0r63tz/zxQwCwIOflcm4zls3GMg0u1CZtXii+PXEeva+rR2iRMnkSebTt6MGR0ojQJBzndUPK74rhKK0IbeaViCQE7kJ0dCJ0qc/mS0KrGObHV08vQl86Ht/Z3TNUdb9/YBBgaHikVEqfX1xq2ujY+ATA5NT0zOzc/MLi0vLK6tr6L68zNH+FfEIKAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20http%3A//infocatcher.ucoz.net/js/cb/toggleGifAnimation.js%0A//%20https%3A//forum.mozilla-russia.org/viewtopic.php%3Fid%3D57977%0A//%20https%3A//github.com/Infocatcher/Custom_Buttons/tree/master/Toggle_GIF_Animation%0A%0A//%20Toggle%20GIF%20Animation%20button%20for%20Custom%20Buttons%0A//%20%28code%20for%20%22initialization%22%20section%29%0A%0A//%20%28c%29%20Infocatcher%202013%0A//%20version%200.2.0%20-%202013-06-14%0A%0Avar%20gifAnimation%20%3D%20%7B%0A%09//%20Note%3A%20we%20use%20original%20button%27s%20icon%20to%20indicate%20disabled%20state%0A%09iconEnabled%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABlElEQVR4nI2SsUsCcRTHv+/yJGzS4kCRWqqpQ5xahYwER/8CGxoPh2rxP6itWXLQKQiXGiQh3JrUKYgIogbvQBwMTTB/r8XfeXde5BcOfvd+733e9/d+P2JmAEC5XN7MZrN3RKRiJiKCVzKfmZ81TctRt14Ro9uLxUwfhXLnWEkeSYipaVoUrXSYX/O77NTbic7MzO/HO654Kx1my7LYsiw2TbPLzAgAwPb1C9qHkYWO/Y8etgDXnjyClOItSj707fX38MeOOePMbIMCmHVwJtiA0RQA0EisgRRCZCPoKgYA6tYrontpLDXE6NkVWD+whxiLxaIkaaVSaT+TyTwB8+v75xrNeDweDTg3hBCuIu/A/EAugPyWdLAIkA4k5C8HzrgvwFvsB1twIIRwAZxyAprNJgaDAQA0CoXC/CFJB0IITKdTe+39b7fb6HQ6N7VaLW87MAyDUqkUCSGYZu39BggAk8nkMZFInOq6HioWi0NiZlSr1XUiyqmqukdEEQCrAEIAgo5aAeBrPB6PFEXpAfgEcP8LWVgYRnUM0zMAAAAASUVORK5CYII%3D%22%2C%0A%0A%09button%3A%20this%2C%0A%09getUtils%3A%20function%28win%29%20%7B%0A%09%09return%20win.QueryInterface%28Components.interfaces.nsIInterfaceRequestor%29%0A%09%09%09.getInterface%28Components.interfaces.nsIDOMWindowUtils%29%3B%0A%09%7D%2C%0A%09get%20mode%28%29%20%7B%0A%09%09var%20win%20%3D%20content%3B%0A%09%09var%20utils%20%3D%20this.getUtils%28win%29%3B%0A%09%09return%20utils.imageAnimationMode%3B%0A%09%7D%2C%0A%09set%20mode%28mode%29%20%7B%0A%09%09var%20win%20%3D%20content%3B%0A%09%09this.setMode%28win%2C%20mode%29%3B%0A%09%09this.updateState%28mode%29%3B%0A%09%7D%2C%0A%09toggle%3A%20function%28%29%20%7B%0A%09%09var%20ic%20%3D%20Components.interfaces.imgIContainer%3B%0A%09%09this.mode%20%3D%20this.mode%20%3D%3D%20ic.kNormalAnimMode%0A%09%09%09%3F%20ic.kDontAnimMode%0A%09%09%09%3A%20ic.kNormalAnimMode%3B%0A%09%7D%2C%0A%09setMode%3A%20function%28win%2C%20mode%29%20%7B%0A%09%09Array.forEach%28win.frames%2C%20function%28win%29%20%7B%0A%09%09%09this.setMode%28win%2C%20mode%29%3B%0A%09%09%7D%2C%20this%29%3B%0A%09%09var%20utils%20%3D%20this.getUtils%28win%29%3B%0A%09%09try%20%7B%0A%09%09%09utils.imageAnimationMode%20%3D%20mode%3B%0A%09%09%7D%0A%09%09catch%28e%29%20%7B%20//%20NS_ERROR_NOT_AVAILABLE%0A%09%09%7D%0A%09%7D%2C%0A%09updateState%3A%20function%28mode%29%20%7B%0A%09%09if%28mode%20%3D%3D%3D%20undefined%29%0A%09%09%09mode%20%3D%20this.mode%3B%0A%09%09var%20btn%20%3D%20this.button%3B%0A%09%09var%20icon%20%3D%20btn.ownerDocument.getAnonymousElementByAttribute%28btn%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%09%09icon.src%20%3D%20mode%20%3D%3D%20Components.interfaces.imgIContainer.kDontAnimMode%0A%09%09%09%3F%20btn.image%0A%09%09%09%3A%20this.iconEnabled%3B%0A%09%7D%2C%0A%09_updateStateTimer%3A%200%2C%0A%09updateStateDelayed%3A%20function%28%29%20%7B%0A%09%09clearTimeout%28this._updateStateTimer%29%3B%0A%09%09this._updateStateTimer%20%3D%20setTimeout%28function%28_this%29%20%7B%0A%09%09%09_this.updateState%28%29%3B%0A%09%09%7D%2C%2020%2C%20this%29%3B%0A%09%7D%0A%7D%3B%0A%0Athis.toggleGifAnimation%20%3D%20function%28%29%20%7B%0A%09gifAnimation.toggle%28%29%3B%0A%7D%3B%0Athis.setAttribute%28%22oncommand%22%2C%20%22this.toggleGifAnimation%28%29%3B%22%29%3B%0A%0Avar%20progressListener%20%3D%20%7B%0A%09onLocationChange%3A%20function%28aWebProgress%2C%20aRequest%2C%20aLocation%29%20%7B%0A%09%09gifAnimation.updateStateDelayed%28%29%3B%0A%09%7D%0A%7D%3B%0A//progressListener.onStateChange%20%3D%0A//%09progressListener.onProgressChange%20%3D%0A//%09progressListener.onStatusChange%20%3D%0A//%09progressListener.onSecurityChange%20%3D%20function%20dummy%28%29%20%7B%7D%3B%0A%0AgifAnimation.updateStateDelayed%28%29%3B%0AgBrowser.addProgressListener%28progressListener%29%3B%0Athis.onDestroy%20%3D%20function%28%29%20%7B%0A%09gBrowser.removeProgressListener%28progressListener%29%3B%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bif%28%21event.target%29%20//%20Button%27s%20hotkey%20pressed%0A%09this.toggleGifAnimation%28%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Исходный код, секция «инициализация»: toggleGifAnimation.js
Отредактировано Infocatcher (14-06-2013 12:36:57)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Тестовая версия, будьте осторожны!
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Toggle GIF Animation 0.2.0 (2013-06-14)
+ Добавлено отображение текущего состояния GIF-анимации (включена/выключена).
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Toggle GIF Animation 0.2.0 (2013-06-14)+ Добавлено отображение текущего состояния GIF-анимации (включена/выключена).
что-то она работает не совсем корректно.
порой кнопка отображает что она включена и блокирует якобы анимацию. но я её не включал.
пользуюсь пока предыдущей версией по совету одного пользователя.
Отсутствует
skynet281978
Это невозможно исправить, кнопка показывает то, что сообщает ей Firefox.
https://developer.mozilla.org/en-US/doc … Attributes
В некоторых случаях
// Components.interfaces.imgIContainer.kDontAnimMode // 1 // Components.interfaces.imgIContainer.kNormalAnimMode // 0 content.QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIDOMWindowUtils) .imageAnimationMode;
выдает неверные данные.
Как минимум, если в другой вкладке есть такая же анимированная картинка, что и во вкладке, на которой была отключена анимация. Например, это видно, если открыть две вкладки с https://ru.wikipedia.org/wiki/GIF. А если обновить одну из вкладок, анимация запустится и на второй.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
об этом я в курсе что запуститься. я говорю о том что кнопка иногда начинает показывать что она нажата на других страницах, хотя я не нажимал её. на странице вообще нет анимации.
поэтому предыдущей пользуюсь. только не в курсе как сделать чтобы по Esc работала
Отсутствует
okkamas_knife
первый вариант работает, спасибо
Отсутствует
Infocatcher
У меня в , при загрузке новых страниц, GIF-анимацию стала включенной и приходится постоянно жать на кнопку. Как бы это дело поправить, чтобы анимация была выключенной?
Отсутствует
У меня в , при загрузке новых страниц, GIF-анимацию стала включенной и приходится постоянно жать на кнопку. Как бы это дело поправить, чтобы анимация была выключенной?
Эээ... то есть image.animation_mode уже сломали? У меня, вроде, работает.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Эээ... то есть image.animation_mode уже сломали? У меня, вроде, работает.
У меня тоже работала на старом профиле, но решил переехать на новый. Избавился от нескольких багов, а вот эта кнопочка почему-то поломалась. Главное что никаких новых расширений не ставил. Теперь приходится мучиться с этой анимацией, так уже от неё отвык, а тут...
Добавлено 28-01-2015 22:05:11
Упс, user_pref("image.animation_mode", "none"); помогло. Спасибо!!!
Отредактировано voqabuhe (28-01-2015 22:05:11)
Отсутствует
voqabuhe
Рабочей нет, есть две проблемы с кодом: переделали доступ к nsIDOMWindowUtils (упростили до window.windowUtils.imageAnimationMode = …) и нужна поддержка мультипроцессности (и это уже сложнее).
Вот упрощенный вариант без индикации (секция «код»):
var code = ` var ic = Components.interfaces.imgIContainer; var mode = content.windowUtils.imageAnimationMode == ic.kNormalAnimMode ? ic.kDontAnimMode : ic.kNormalAnimMode; (function setMode(win) { win.windowUtils.imageAnimationMode = mode; Array.prototype.forEach.call(win.frames, setMode); })(content); `; var data = "data:application/javascript," + encodeURIComponent(code); gBrowser.selectedBrowser.messageManager.loadFrameScript(data, false);
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Вот упрощенный вариант без индикации (секция «код»):
Да главное что она останавливает анимацию останавливает без перезагрузки страницы. Спасибо.
Вот только можно сделать, чтобы изначально всё было отключено?
Отсутствует
Вот только можно сделать, чтобы изначально всё было отключено?
Так ведь, вроде, по-прежнему можно сделать image.animation_mode = none.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Так ведь, вроде, по-прежнему можно сделать image.animation_mode = none.
Спасибо. Даже не вспомню уже, зачем же я её опять прописал в user.js как "normal".
А иконку как прикрутить, чтоб переключение показывала?
Отредактировано voqabuhe (18-02-2020 20:09:04)
Отсутствует
Toggle GIF Animation 0.3.0 (2020-02-25)
[*] Добавлена поддержка мультипроцессного режима.
[x] Исправлено переключение анимации в Firefox 63+.
Для обновления надо установить по ссылке или дополнительно к обновлению «инициализации» вручную заменить секцию «код» на
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Страницы: 1