Страницы: 1
Расширение возможностей дополнения 'Phrase Highlighter' - Extender for 'Phrase Highlighter' (Firefox)
Автор: Я
Описание: Небольшое расширение возможностей дополнения Phrase Highlighter. Хороший аналог/заменитель кнопки Автовыделение ++
Использование: создать новую CB кнопку или положить код в инициализацию другой кнопки
ЛКМ по кнопке дополнения - если на странице есть выделенный текст (слово или фраза), добавляет его в ячейку и активирует автовыделение. Всего в дополнении 5 ячеек, соответственно, при добавлении шестого объекта, появится предупреждение. Если выделенного текста нет, то - действие по умолчанию.
СКМ по кнопке дополнения - Очищает все ячейки и отключает дальнейшее автовыделение. Также снимает разноцветную подсветку ранее выделенных объектов.
Shift + ЛКМ по кнопке дополнения - активация варианта с заранее заданными словами. При этом, состояние активности помечается подсветкой кнопки дополнения. По аналогии, можно добавить и другие варианты предустановок, повесив их на иные сочетания клавиш.
// ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ ДЛЯ ДОПОЛНЕНИЯ 'PHRASE HIGHLIGHTER' var buttonext = document.getElementById("phrase-highlighter-toolbar-button"); //var prefs = Application.prefs; var alertsService = Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService); var red = ""; var orange = ""; var yellow = ""; var green = ""; var blue = ""; addEventListener("click", clickphr, false, buttonext); buttonext.onmouseover = function() { getcolor(); if ( !cbu.getPrefs("extensions.phrasehighlighter.enable") ) { buttonext.tooltipText = "Phrase Highlighter\nСостояние: ВЫКЛЮЧЕН"; return }; //button.tooltipText = "Phrase Highlighter\n" + sost; buttonext.tooltipText = "Phrase Highlighter\nСостояние: ВКЛЮЧЕН\nRed: "+ red + "\nOrange: " + orange + "\nYellow: " + yellow + "\nGreen: " + green + "\nBlue: " + blue; }; var css = "/*AGENT_SHEET*/\n" css = "#phrase-highlighter-toolbar-button .toolbarbutton-icon { background-color: pink !important; }\n"; css = css + "#phrase-highlighter-toolbar-button > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon { background-color: pink !important; }\n"; var uri = makeURI("data:text/css," + encodeURIComponent(css)); var sss = Cc["@mozilla.org/content/style-sheet-service;1"]. getService(Ci.nsIStyleSheetService); addDestructor(function() { sss.unregisterSheet( uri, sss.AGENT_SHEET ) }); // Настройка функций кликов мыши для кнопки function clickphr(e) { // действие при клике ЛКМ if ( e.button == 0 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { var text = plzSelect(); if ( text == false ) return; getcolor(); if ( red == "" ) cbu.setPrefs("extensions.phrasehighlighter.red-phrases", convertFromUnicode("UTF-8", text)); else if ( orange == "" ) cbu.setPrefs("extensions.phrasehighlighter.orange-phrases", convertFromUnicode("UTF-8", text)); else if ( yellow == "" ) cbu.setPrefs("extensions.phrasehighlighter.yellow-phrases", convertFromUnicode("UTF-8", text)); else if ( green == "" ) cbu.setPrefs("extensions.phrasehighlighter.green-phrases", convertFromUnicode("UTF-8", text)); else if ( blue == "" ) cbu.setPrefs("extensions.phrasehighlighter.blue-phrases", convertFromUnicode("UTF-8", text)); else alertsService.showAlertNotification( "data:image/png;base64,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", " Phrase Highlighter", "Все ячейки заполнены!", ""); setTimeout(function() { cbu.setPrefs("extensions.phrasehighlighter.enable", true); phraseHighlighter.run(); }, 300); }; // действие при клике СКМ if (e.button == 1 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { cbu.setPrefs("CB.phrasehighlighter", false); cleanphrase(); toggleStyle(); // снять разноцветную подсветку на странице for ( var br of gBrowser.browsers ) { [...br.contentDocument.querySelectorAll('SPAN[style^="color:"]')] .forEach((m)=>{ if (m.style.backgroundColor) m.style = "" }); } }; // действие при клике SHIFT + ЛКМ if ( e.button == 0 && !e.ctrlKey && e.shiftKey && !e.altKey && !e.metaKey ) { cbu.setPrefs("CB.phrasehighlighter", !cbu.getPrefs("CB.phrasehighlighter") ); if ( cbu.getPrefs("CB.phrasehighlighter") ) { setphrase(); toggleStyle(); } else { cleanphrase(); toggleStyle(); } }; }; // Проверить наличие строк в about:config и создать если не существует if ( !cbu.isPref("CB.phrasehighlighter") ) { cbu.setPrefs("CB.phrasehighlighter", false); }; cbu.setPrefs("CB.phrasehighlighter", false); // Установить стиль для кнопки дополнения при включенном режиме предустановок function toggleStyle() { if ( cbu.getPrefs("CB.phrasehighlighter") ) { setTimeout(function() { sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET) }, 300); } if ( !cbu.getPrefs("CB.phrasehighlighter") ) { setTimeout(function() { sss.unregisterSheet( uri, sss.AGENT_SHEET ) }, 300); } }; // Очистка ячеек и отключение Autoload function cleanphrase() { cbu.setPrefs("extensions.phrasehighlighter.enable", false); cbu.setPrefs("extensions.phrasehighlighter.red-phrases", ""); cbu.setPrefs("extensions.phrasehighlighter.orange-phrases", ""); cbu.setPrefs("extensions.phrasehighlighter.yellow-phrases", ""); cbu.setPrefs("extensions.phrasehighlighter.green-phrases", ""); cbu.setPrefs("extensions.phrasehighlighter.blue-phrases", ""); }; // Предустановка своих значений и включение Autoload function setphrase() { cbu.setPrefs("extensions.phrasehighlighter.red-phrases", convertFromUnicode("UTF-8", "custom1")); cbu.setPrefs("extensions.phrasehighlighter.orange-phrases", convertFromUnicode("UTF-8", "custom2")); cbu.setPrefs("extensions.phrasehighlighter.yellow-phrases", convertFromUnicode("UTF-8", "custom3")); cbu.setPrefs("extensions.phrasehighlighter.green-phrases", convertFromUnicode("UTF-8", "custom4")); cbu.setPrefs("extensions.phrasehighlighter.blue-phrases", convertFromUnicode("UTF-8", "custom5")); setTimeout(function() { cbu.setPrefs("extensions.phrasehighlighter.enable", true); phraseHighlighter.run(); }, 300); }; // Функция отдаст выделенный текст из страницы или текстового поля, если текст не выделен отдаст 'false' function plzSelect() { // выделенный текст из страницы var selection = document.commandDispatcher.focusedWindow.getSelection().toString(); // выделенный текст из текстового поля if ( selection == '' ) { var theBox = document.commandDispatcher.focusedElement; if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selection = theBox.value.substring(startPos, endPos); } }; // убираем пробелы с обоих концов текста if ( selection !== '' ) var selection = selection.toString().replace(/^\s+|\s+$/g,""); return ( selection == '')? false: selection; }; function getcolor() { red = gPrefService.getComplexValue("extensions.phrasehighlighter.red-phrases", Ci.nsISupportsString).data; orange = gPrefService.getComplexValue("extensions.phrasehighlighter.orange-phrases", Ci.nsISupportsString).data; yellow = gPrefService.getComplexValue("extensions.phrasehighlighter.yellow-phrases", Ci.nsISupportsString).data; green = gPrefService.getComplexValue("extensions.phrasehighlighter.green-phrases", Ci.nsISupportsString).data; blue = gPrefService.getComplexValue("extensions.phrasehighlighter.blue-phrases", Ci.nsISupportsString).data; }; toggleStyle(); // Обработчик следит за загрузкой и переключением вкладки и запускают phraseHighlighter var listener = { onStateChange: function(wpr, req) { if ( gBrowser.currentURI.spec == 'chrome://global/content/console.xul') return; if ( Ci.nsIWebProgressListener.STATE_STOP ) { setTimeout(function() { if ( cbu.getPrefs("CB.phrasehighlighter")) phraseHighlighter.run(); }, 500); }; }, onLocationChange: function(wpr, req) { if ( wpr.currentURI.spec != "about:blank" && !req && wpr.document.readyState == "complete") { setTimeout(function() { if ( cbu.getPrefs("CB.phrasehighlighter")) phraseHighlighter.run(); }, 500); }; } }; gBrowser.addProgressListener( listener ); addDestructor(function() gBrowser.removeProgressListener( listener ) );
Создавал для себя / под свои нужды.
Т.к. я не специалист, то наверняка можно было что-то сделать проще и оптимальней
Отредактировано Inko7 (06-12-2016 22:39:46)
Отсутствует
Остался вопрос, который хотелось бы разрешить: после нажатия СКМ, очищаются ячейки, отключается дальнейшее автовыделение, но уже помеченные слова остаются на странице. Как снять эту разноцветную подсветку без обновления страницы???
Так вроде снимает подсветку:
for ( var br of gBrowser.browsers ) { [...br.contentDocument.querySelectorAll('SPAN[style^="color:white;"]')] .forEach((m)=> m.style = "" ); }
но при команде назад или перёд на прошлой или следующей странице выделение остаётся.
Кстати:
buttonext.addEventListener("click", clickphr, false); addDestructor(function() { buttonext.removeEventListener("click", clickphr, false) });
можно просто заменить на:
Отредактировано bunda1 (22-11-2015 14:53:27)
Отсутствует
Так вроде снимает подсветку:
Уже прогресс! Но странно как-то снимает подсветку - только у красного цвета и синего. Зеленый, оранжевый, желтый - остаются...
За оптимизацию кода спасибо, сейчас поправлю
Отсутствует
Тут проблемка, дополнение Phrase Highlighter ставит цветной SPAN над текстом который выделяет, а мой код находит эти SPAN по Css селектору color:white;, но оказывается что для зеленного, оранжевого, жёлтого цвета этот Css селектор color:black;. Можно найти SPAN по селектору color: но тогда возможно мой код отключит какие то другие SPAN на страницах:
for ( var br of gBrowser.browsers ) { [...br.contentDocument.querySelectorAll('SPAN[style^="color:"]')] .forEach((m)=> m.style = "" ); }
Отсутствует
bunda1
спасибо, так срабатывает полностью
мой код отключит какие то другие SPAN на страницах
может тогда сделать двойной код - отдельно цикл для color:white и отдельно для color:black ?
так вероятность отключения лишнего ниже?
Отсутствует
может тогда сделать двойной код - отдельно цикл для color:white и отдельно для color:black ?
так вероятность отключения лишнего ниже?
Можно и так, но всё равно что то заденет, я сейчас попробую придумать что то.
Отсутствует
Может так:
for ( var br of gBrowser.browsers ) { [...br.contentDocument.querySelectorAll('SPAN[style^="color:"]')] .forEach((m)=>{ if (m.style.backgroundColor) m.style = "" }); }
Отсутствует
добавил какую-то контрольную проверку?
Добавил if (m.style.backgroundColor), вроде у других SPAN не наблюдается backgroundColor
Отсутствует
уважаемый автор!
не знаю, как у других камрадов, но у меня эта кнопка перестала работать, начиная с FF версии 47 ((((((
пожалуйста, посмотрите, может можно подправить
а может это сам аддон Custom Buttons плохо совместим с последними версиями FF?
Отсутствует
а может это сам аддон Custom Buttons плохо совместим с последними версиями FF?
Отсутствует
спасибо, но не помогло
А если так: Многоцветное автовыделение
Отсутствует
user44
сейчас проверил у себя, вроде все работает
Не может быть! В коде кнопки есть Application который не работает на FF50.
Отсутствует
bunda1
Добавлено 06-12-2016 21:36:59
упс, у меня чуть подправленный вариант:
// ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ ДЛЯ ДОПОЛНЕНИЯ 'PHRASE HIGHLIGHTER' var buttonext = document.getElementById("phrase-highlighter-toolbar-button"); //var prefs = Application.prefs; var alertsService = Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService); var red = ""; var orange = ""; var yellow = ""; var green = ""; var blue = ""; addEventListener("click", clickphr, false, buttonext); buttonext.onmouseover = function() { getcolor(); if ( !cbu.getPrefs("extensions.phrasehighlighter.enable") ) { buttonext.tooltipText = "Phrase Highlighter\nСостояние: ВЫКЛЮЧЕН"; return }; //button.tooltipText = "Phrase Highlighter\n" + sost; buttonext.tooltipText = "Phrase Highlighter\nСостояние: ВКЛЮЧЕН\nRed: "+ red + "\nOrange: " + orange + "\nYellow: " + yellow + "\nGreen: " + green + "\nBlue: " + blue; }; var css = "/*AGENT_SHEET*/\n" css = "#phrase-highlighter-toolbar-button .toolbarbutton-icon { background-color: pink !important; }\n"; css = css + "#phrase-highlighter-toolbar-button > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon { background-color: pink !important; }\n"; var uri = makeURI("data:text/css," + encodeURIComponent(css)); var sss = Cc["@mozilla.org/content/style-sheet-service;1"]. getService(Ci.nsIStyleSheetService); addDestructor(function() { sss.unregisterSheet( uri, sss.AGENT_SHEET ) }); // Настройка функций кликов мыши для кнопки function clickphr(e) { // действие при клике ЛКМ if ( e.button == 0 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { var text = plzSelect(); if ( text == false ) return; getcolor(); if ( red == "" ) cbu.setPrefs("extensions.phrasehighlighter.red-phrases", convertFromUnicode("UTF-8", text)); else if ( orange == "" ) cbu.setPrefs("extensions.phrasehighlighter.orange-phrases", convertFromUnicode("UTF-8", text)); else if ( yellow == "" ) cbu.setPrefs("extensions.phrasehighlighter.yellow-phrases", convertFromUnicode("UTF-8", text)); else if ( green == "" ) cbu.setPrefs("extensions.phrasehighlighter.green-phrases", convertFromUnicode("UTF-8", text)); else if ( blue == "" ) cbu.setPrefs("extensions.phrasehighlighter.blue-phrases", convertFromUnicode("UTF-8", text)); else alertsService.showAlertNotification( "data:image/png;base64,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", " Phrase Highlighter", "Все ячейки заполнены!", ""); setTimeout(function() { cbu.setPrefs("extensions.phrasehighlighter.enable", true); phraseHighlighter.run(); }, 300); }; // действие при клике СКМ if (e.button == 1 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { cbu.setPrefs("CB.phrasehighlighter", false); cleanphrase(); toggleStyle(); // снять разноцветную подсветку на странице for ( var br of gBrowser.browsers ) { [...br.contentDocument.querySelectorAll('SPAN[style^="color:"]')] .forEach((m)=>{ if (m.style.backgroundColor) m.style = "" }); } }; // действие при клике SHIFT + ЛКМ if ( e.button == 0 && !e.ctrlKey && e.shiftKey && !e.altKey && !e.metaKey ) { cbu.setPrefs("CB.phrasehighlighter", !cbu.getPrefs("CB.phrasehighlighter") ); if ( cbu.getPrefs("CB.phrasehighlighter") ) { setphrase(); toggleStyle(); } else { cleanphrase(); toggleStyle(); } }; }; // Проверить наличие строк в about:config и создать если не существует if ( !cbu.isPref("CB.phrasehighlighter") ) { cbu.setPrefs("CB.phrasehighlighter", false); }; cbu.setPrefs("CB.phrasehighlighter", false); // Установить стиль для кнопки дополнения при включенном режиме предустановок function toggleStyle() { if ( cbu.getPrefs("CB.phrasehighlighter") ) { setTimeout(function() { sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET) }, 300); } if ( !cbu.getPrefs("CB.phrasehighlighter") ) { setTimeout(function() { sss.unregisterSheet( uri, sss.AGENT_SHEET ) }, 300); } }; // Очистка ячеек и отключение Autoload function cleanphrase() { cbu.setPrefs("extensions.phrasehighlighter.enable", false); cbu.setPrefs("extensions.phrasehighlighter.red-phrases", ""); cbu.setPrefs("extensions.phrasehighlighter.orange-phrases", ""); cbu.setPrefs("extensions.phrasehighlighter.yellow-phrases", ""); cbu.setPrefs("extensions.phrasehighlighter.green-phrases", ""); cbu.setPrefs("extensions.phrasehighlighter.blue-phrases", ""); }; // Предустановка своих значений и включение Autoload function setphrase() { cbu.setPrefs("extensions.phrasehighlighter.red-phrases", convertFromUnicode("UTF-8", "custom1")); cbu.setPrefs("extensions.phrasehighlighter.orange-phrases", convertFromUnicode("UTF-8", "custom2")); cbu.setPrefs("extensions.phrasehighlighter.yellow-phrases", convertFromUnicode("UTF-8", "custom3")); cbu.setPrefs("extensions.phrasehighlighter.green-phrases", convertFromUnicode("UTF-8", "custom4")); cbu.setPrefs("extensions.phrasehighlighter.blue-phrases", convertFromUnicode("UTF-8", "custom5")); setTimeout(function() { cbu.setPrefs("extensions.phrasehighlighter.enable", true); phraseHighlighter.run(); }, 300); }; // Функция отдаст выделенный текст из страницы или текстового поля, если текст не выделен отдаст 'false' function plzSelect() { // выделенный текст из страницы var selection = document.commandDispatcher.focusedWindow.getSelection().toString(); // выделенный текст из текстового поля if ( selection == '' ) { var theBox = document.commandDispatcher.focusedElement; if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selection = theBox.value.substring(startPos, endPos); } }; // убираем пробелы с обоих концов текста if ( selection !== '' ) var selection = selection.toString().replace(/^\s+|\s+$/g,""); return ( selection == '')? false: selection; }; function getcolor() { red = gPrefService.getComplexValue("extensions.phrasehighlighter.red-phrases", Ci.nsISupportsString).data; orange = gPrefService.getComplexValue("extensions.phrasehighlighter.orange-phrases", Ci.nsISupportsString).data; yellow = gPrefService.getComplexValue("extensions.phrasehighlighter.yellow-phrases", Ci.nsISupportsString).data; green = gPrefService.getComplexValue("extensions.phrasehighlighter.green-phrases", Ci.nsISupportsString).data; blue = gPrefService.getComplexValue("extensions.phrasehighlighter.blue-phrases", Ci.nsISupportsString).data; }; toggleStyle(); // Обработчик следит за загрузкой и переключением вкладки и запускают phraseHighlighter var listener = { onStateChange: function(wpr, req) { if ( gBrowser.currentURI.spec == 'chrome://global/content/console.xul') return; if ( Ci.nsIWebProgressListener.STATE_STOP ) { setTimeout(function() { if ( cbu.getPrefs("CB.phrasehighlighter")) phraseHighlighter.run(); }, 500); }; }, onLocationChange: function(wpr, req) { if ( wpr.currentURI.spec != "about:blank" && !req && wpr.document.readyState == "complete") { setTimeout(function() { if ( cbu.getPrefs("CB.phrasehighlighter")) phraseHighlighter.run(); }, 500); }; } }; gBrowser.addProgressListener( listener ); addDestructor(function() gBrowser.removeProgressListener( listener ) );
Отредактировано Inko7 (06-12-2016 22:38:22)
Отсутствует
упс, у меня чуть подправленный вариант:
Ну тогда понятно. Не забудь исправить 20-11-2015 22:41:56
Отсутствует
Исправлен код кнопки в первом сообщении темы с учетом последних изменений в ff
Отсутствует
Inko7
теперь заработало
большое спасибо!
bunda1
Многоцветное автовыделение - весьма приятная кнопка, тоже буду юзать
большое спасибо!
жалко только, что можно задавать только фон, а не фон+цвет текста
и кнопки, конечно, непривычные
Отсутствует
Страницы: 1