iDev.Pi
1. Если в поиск начать вписывать букву за буквой (так, чтобы получилась длинная абракадабра, которой точно нет на странице) - то при добавлении новых букв - цвет фона поля поиска меняется с красного (сигнализирующего о том, что на странице нет искомой фразы) на белый (сигнализирующий, что фраза на странице есть).
Исправил: Toggle Find+3
Добавлено 07-10-2012 00:08:27
Удалил добавленные атрибута "red" из кнопки, вместо него когда нужно добавляется status="notfound" и Firefox сам добавляет красный цвет в поисковую форму
Удалил теперь не нужный код:
Удалил лишний код :
#FindToolbar:not([red]) .findbar-textbox[status="notfound"] { background: rgba(207,219,236,0.99) !important; color: black !important; box-shadow: none !important; }
Отредактировано bunda1 (07-10-2012 00:10:36)
Отсутствует
Кнопка вываливает в консоль ошибок такое предупреждение:
Warning: Use of Mutation Events is deprecated. Use MutationObserver instead.
Source File: chrome://custombuttons-context/content/button.js?windowId=Firefox&id=custombuttons-button22@init
Line: 647
mzfx
Отсутствует
iDev.Pi
У меня такой ошибки не наблюдается.
А ты какую версию Toggle Find+3 используешь, откуда? А то у меня Line: 647:
и там такой ошибки быть не может.
Отсутствует
Причина в использовании mutation events.
Там в коде два вызова .addEventListener("DOMAttrModified", ...
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
bunda1
на той же странице сказано:
И там всё расписано и даже пример есть.
mzfx
Отсутствует
iDev.Pi
Раньше там даже примера не было, только несколько ссылок.
Так что было забавно: «вы этот свой старый код лучше выкиньте, но дальше как-нибудь сами».
Самая полезная, про настройки для
The options argument allows for setting mutation observation options via object members. These are the object members that can be used:
(и далее)
Отредактировано Infocatcher (07-11-2012 20:35:03)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
bunda1
// выбираем целевой узел var target = document.querySelector('#some-id'); // создаём наблюдателя var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { console.log(mutation.type); }); }); // конфигурируем наблюдателя var config = { attributes: true, childList: true, characterData: true } // делаем вызов функции, указав целевой узел и опции вызова observer.observe(target, config); // потом можем остановить наблюдение observer.disconnect();
вот рабочий пример: http://jsbin.com/ivamoh/53/edit
Отредактировано iDev.Pi (07-11-2012 21:52:51)
mzfx
Отсутствует
Спасыбо за пример, полезная вещь и работает:
// Поле текстового ввода на Findbar мигает желтим если достигнут низ/верх страницы // выбираем целевой узел var target = gFindBar.getElement("find-status-icon"); // создаём наблюдателя var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { gFindBar.setAttribute("flash", "true"); setTimeout(function() { gFindBar.removeAttribute("flash") }, 700) }); }); // конфигурируем наблюдателя var config = { attributes: true, childList: true, characterData: true } // делаем вызов функции, указав целевой узел и опции вызова observer.observe(target, config);
Но как то:
var findStatus = gFindBar.getElement("find-status-icon"); findStatus.addEventListener("DOMAttrModified" ......
был привычней и понятней.
Отредактировано bunda1 (07-11-2012 22:54:28)
Отсутствует
bunda1
Я так понимаю, «characterData: true» в данном случае не требуется:
characterData
Set to true if mutations to target's data are to be observed.
и
Note: CharacterData is an abstract interface and does not exist as node. It is used by Text, Comment, and ProcessingInstruction nodes.
В общем, не про атрибуты это.
И если не нужно отслеживать изменение атрибутов дочерних узлов, то и «childList: true» тоже не нужен:
childList
Set to true if mutations to target's children are to be observed.
И можно добавить
{ attributes: true, attributeFilter: ["status"] }
(или какой-том атрибут меняется?)
Добавлено 07-11-2012 23:08:33
А еще MutationCallback может быть не только функцией, но и объектом с методом handleMutations().
Правда, это почему-то не указано в доке. Зато можно подсунуть пустой объект и будет соответствующим образом ругаться.
Добавлено 07-11-2012 23:10:28
Как-то так:
Ошибка: [Exception... "'JavaScript component does not have a method named: "handleMutations"' when calling method: [nsIMutationObserverCallback::handleMutations]" nsresult: "0x80570030 (NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED)" location: "native frame :: <unknown filename> :: <TOP_LEVEL> :: line 0" data: no]
Отредактировано Infocatcher (07-11-2012 23:10:28)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Спасибо, уже меньше кода и работает:
// Поле текстового ввода на Findbar мигает желтим если достигнут низ/верх страницы // создаём наблюдателя var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { gFindBar.setAttribute("flash", "true"); setTimeout(function() { gFindBar.removeAttribute("flash") }, 700) }); }); // конфигурируем наблюдателя var config = { attributes: true, attributeFilter: ["status"] } // делаем вызов функции, указав целевой узел и опции вызова observer.observe(gFindBar.getElement("find-status-icon"), config );
Отредактировано bunda1 (07-11-2012 23:24:46)
Отсутствует
bunda1
С этим тоже надо решать :
// Автоматически очищать поле текстового ввода на Findbar .................................................... gFindBar.addEventListener("DOMAttrModified", function(event) { if ( gFindBar.hidden ) { this.clear = true }; if ( !custombuttons.getPrefs("FindBar.autoclear") ) return; if ( !this.clear ) return; if ( gFindBar.hidden ) { if ( gFindBar._findField.value ) { window.FB_fFval = gFindBar._findField.value }; gFindBar._findField.value = ''; } else { findFieldClear(event); this.clear = false; }; }, false);
P.S. Для меня не критично.Я этой опцией не пользуюсь - удалил этот код у себя из кнопки.
Отредактировано SendInfo (09-11-2012 00:16:53)
Отсутствует
Кнопка вываливает в консоль ошибок такое предупреждение:
Warning: Use of Mutation Events is deprecated. Use MutationObserver instead.
Ну вроде исправил и код оптимизировал: http://forum.mozilla-russia.org/uploaded/Toggle Find+3
Отредактировано bunda1 (12-11-2012 22:30:46)
Отсутствует
iDev.Pi
Как подружить FindBar мини с Personas :: Add-ons for Firefox - Mozilla Firefox
Отсутствует
iDev.Pi
Какие стили самих персон?
Мне казалось что обои это просто две файла профиле lightweighttheme-footer и lightweighttheme-header которые используются как фоновое изображение.
Отсутствует