проблему описанную в посте №4364 вроде бы решил самостоятельно
Просмотрев еще раз примеры кодов из данной ветки, все получилось! Если кому интересно, то вот так:
function Highlight(event) { // hide Highlight gFindBar._highlightDoc(false); // auto Highlight if (custombuttonsUtils. getPrefs ("Auto.Highlight", true)) { // getting prefs Unicode value var value = prefs.getComplexValue("Auto.Highlight.value", Components.interfaces.nsISupportsString).data; // Highlight var wordsToSearch = value.split(" "); while (wordsToSearch. length > 0) { gFindBar. _findField. value = wordsToSearch. shift (); gFindBar. toggleHighlight (true); } } };
// read from popup promtBox var Title = "Автовыделение"; var Desc = "Bведите текст:"; var SEL = ""; var SURL = custombuttons.promptBox(Title, Desc, SEL); if (SURL[0] == false) return; else str.data = [SURL[1]];
при появлении окна promtbox, поле ввода активно, т.е. при наборе текста он вбивается, но курсор не отображается. Кликнешь мышкой на поле ввода, тогда курсор появится.
Что можно сделать, чтобы курсор был изначально при появлении окна promtbox?
Отсутствует
window.js
Добавлена индикация наличия окна, открытого до инициализации кнопки.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
window.jsДобавлена индикация наличия окна, открытого до инициализации кнопки.
это что такое, т.е. ты про что и что с этим делать?
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Inko7
Я попробовал твой код и курсор отображается при появлении окна, в поле ввода promtbox.
Можно так.
// read from popup promtBox var SURL = custombuttons.promptBox("Автовыделение", "Bведите текст:", ""); if (SURL[0] == false) return; else str.data = [SURL[1]];
Отсутствует
bunda1
да, сам по себе код работает
например в кнопке "поиск по сайту" с курсором все в порядке - он есть, а в этой кнопке его нет
попробуй пожалуйста у себя эту кнопку целиком:
/*Initialization Code*/ // Кнопка для автовыделения заранее введенного текста с поддержкой нескольких слов // настройка функций кликов мыши (Mouse Click settings) this.onclick = function(event) { if(event.button == 0) { // Действие при клике ЛКМ switchHighlight(event); }; if(event.button == 1) { // Действие при клике СКМ HighlightAdd(event); } if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Действие при клике ПКМ без модификаторов // Блокируем контекстное меню при клике ПКМ без модификаторов event.preventDefault(); event.stopPropagation(); // clear preference prefs.setCharPref("Auto.Highlight.value",""); prefs.setBoolPref("Auto.Highlight",1); switchHighlight(event); custombuttons.alertSlide("Автовыделение", "Значение сброшено"); }; }; // Объявляем 'clipboard','storage' var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper); storage = globalStorage[document.domain] // подсказка this.showHighlightAdd = function() { //getting prefs Unicode value var HighlightValue = prefs.getComplexValue("Auto.Highlight.value",Components.interfaces.nsISupportsString).data; var text = "ЛКМ = Bключить/выключить\nСКМ = Добавить текст \nПКМ = Сбросить"; var L_text = "Выделяемое: "; this.tooltipText = this.label +"\n" + text +"\n\n"+ L_text + HighlightValue; } this.setAttribute("onmouseover", "this.showHighlightAdd()"); // Стоп, при открытии настройки панелей this.onDestroy = function(reason) { //.... if (reason == "constructor") storage['run'] = 'stop' if (reason == "destructor") delete storage['run'] } // проверить наличие строк в about:config и создать если не существует (Add preferences) var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService); var f; try{ f = prefs.getBoolPref("Auto.Highlight"); } catch(e){ prefs.setBoolPref("Auto.Highlight", true); prefs.setCharPref("ui.textHighlightBackground", "#ef0fff"); // http://coloria.net/bonus/colornames.htm HighlightAdd(event); } // Авто выделение, добавить текст function HighlightAdd(event){ // Get the root branch var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); // setting Unicode value var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString); // read from selected var text = document.commandDispatcher.focusedWindow.getSelection(); if (text != '') { str.data = text; } else { // read from Clipboard //str.data = readFromClipboard(); // read from popup promtBox var SURL = custombuttons.promptBox("Автовыделение", "Bведите текст:", ""); if (SURL[0] == false) return; else str.data = [SURL[1]]; }; // setting prefs Unicode value prefs.setComplexValue("Auto.Highlight.value",Components.interfaces.nsISupportsString, str); // getting prefs Unicode value var Avalue = prefs.getComplexValue("Auto.Highlight.value",Components.interfaces.nsISupportsString).data // Sliding alert if (Avalue == "") { custombuttons.alertSlide("Автовыделение", "Нет данных для обработки"); } else { custombuttons.alertSlide("Автовыделение", Avalue); prefs.setBoolPref("Auto.Highlight",0); switchHighlight(event); } // run auto Highlight Highlight(event); }; // Авто выделение, включить function switchHighlight(event){ // toggle preference var s = "Auto.Highlight"; custombuttons.setPrefs(s, !custombuttons.getPrefs(s)); // toggle image ToggleImage(event); // run auto Highlight Highlight(event); }; // Изменить иконку кнопки var button = this; function ToggleImage(event){ // toggle button image if (custombuttonsUtils. getPrefs ("Auto.Highlight", true)) { button.image="data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD+//4B////APX69AV9vWaPVJsR9GabDPiQrDGn6OzRG////wD+/v0B////AP///gL///0B////AP///wD///8A////AP3+/gP///8ActGnhRyqVP83q0r8PqMu/kqZDf9yoh7Wu8t8YNjan07m4bM9+ffqCf///wD///4B////AP///wD8/v8C//7/AOL5/A4d1NrUFc/G/yHEov0qt3b/NKtM/UGeHv9WlAD/eJcB/peZAP+nphzH5+bAIP///wD+/v8A/fz/A/3+/wH///8A5/b+CyG8/c4Jz/z/ENfm/RrLuf8nu4b/M61S/UGgJvtbnBH8fqAQ/IKXAP+lrjax/v76AP7+/gH///8A7fD9CNni/Bb///8Ac7/4dQCn9/8P1f38ENbh/xzIsf8ouoD/NKtL/0GeHf9enA79dJ0M/4yiGOrx8d0c/f3/AJaT7105O+TOHTjn5GuP8n7u9v4AOK/3ugW/+/8N2vX9FdDN/yDDoP8rtXD/N6c//kqdGPpcnBD/dqIZ3/L05BCVht5rLhXE/zMj0f0nKuL/EkHp7+Dm/Bq64/wyBKz4/w/W/fwP1+X/Gsq4/ya+kPwwsWH+M58o/jSSAP+exXNr////AFkwrepXMrT8SjPG9icg2v8xRunM8fX+BfL5/gcdpPbOBMH8/w/b9vwX0dH+FcKk/yS3evFZum2rpdOaUPj79gD///8BZy6R8lsqn/8/Hbb/NSfS6MPE+DDj7PwI8vP9ALHe/DQXs/nWAs/9/wDV5v9C1Mmwye/jI////wD///8B////AP7+/gG/oclQgVSpuIhuy4/OyfIheHbpgx815+4vZ+7C2uf8Fuz5/we+8P83y/f8Jvb9/QL///8A8vv4CZPUpGO837Y5////AP///wD6+f0D////AIVy1IsgEsz/Lini+Qow5/+Gq/Vq////AM/t/Ruo6/4+6/z9C////wB817lzE6dQ/zGeJfOs05lI/Pv9Bf///wDXy+knTCOu7UYvxf89KtH4Fhrh/4yb9GTB3/sjCJH07QC9+v854Pio9///AFHOsrMktnX/NKtO/0KoPsz9/P0D////AMey2ElWJaL/UzG4+k0vv/4sGs/5vLn1Mkl68aoLcvD/G6j4+QDH+v+29f8xY9zUkA/Eo/8swpH3JL6M/P38/gL///8A08DcNF8kkPlgNar9Sh2m/3texp/i4PsPKTDk7hxP7P8eefD7Apb1/47Z/E2x8vw2AMrv/wXN5/8O0Ova////AP///wH8+/wAoHe0iWkukfN+U66v8+31C9PL7iA3H8n6KSzi/yNF6/sMVe3/rc35PP///wB/zv1qM7L7u53e/j7///8A////AP///wD7+fsB6NzqD/n2+gT///8A7uf0EV80rONFKcD/LCTU/zxC47/u8P4D////Af7+/gH//f4A///+AP///wD///8A//7/AP79/gL///8A/v7/Av38/gT///8AsZHEZmAplv5gOrPQzMbwKf///wD9/f4C/f//A/7//wL9/v8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; } else { button.image="data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAD///8A/v7+AP39/QH9/f0B/f39Af39/QH///8AmJiYKQAAALEDAwPqAAAA1gAAAGm7u7sA////Afv7+wD///8A////AP39/QH9/f0D////AP///wD7+/sB////AKKiogoAAADJAAAA/wAAAP0BAQH+AAAA/wsLC3HDw8MA////Bfb29gP+/v4A////Aefn5wDT09MJ1tbWCdTU1AT///8AXFxcSwAAAPsEBAT/AAAA/gAAAPwFBQX/AAAA63Nzczvu7u4A/Pz8Avz8/AHr6+sJMjIyZgAAAL8CAgLCAAAApsbGxhhoaGhLAAAA/gUFBf8AAAD+AAAA/wAAAP0DAwP/AAAA6hMTE5eHh4cr3d3dACsrK4gAAAD/AwMD/gMDA/wAAAD/Hh4emy0tLQwAAADwAQEB/wAAAP4AAAD/AAAA/wAAAP8BAQH9AwMD/wAAAOcrKys5AwMD7gYGBv4AAAD7BAQE/QAAAP9KSkp5////ABUVFcIAAAD/AQEB/QAAAP8AAAD/AAAA/wAAAP4BAQH6BwcH/wICAr8BAQGfAAAA/wEBAf8AAADrBQUFeMbGxgX///8AGhoawQAAAP8BAQH+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9BgYG66+vrwc1NTVCDw8PPgAAADUREREt0tLSF+7u7gAdHR27AAAA/wICAvsBAQH9AQEB/QEBAf0BAQH8AQEB+wICAv8BAQHC////AsHBwQAICAhzAAAA6AQEBP8AAADqWlpaL25ubj8AAAD4AgIC/wAAAP4AAAD/AAAA/wAAAP4CAgL/AAAA3VtbWznHx8cABgYGbwAAAP8BAQH+AAAA+AUFBf8AAAB18PDwAIyMjDwYGBiuGRkZwxgYGJQTExNzFhYWdQUFBWRgYGAb////ALS0tBwAAADXBQUF/wAAAPgFBQX/AAAA90tLSzunp6cApqamDaurqwP///8A////AP///wD///8A////AP///wD7+/sBtLS0LQAAAOwLCwv/CQkJ+wAAAP88PDyLkJCQDAICAqYAAADdAAAAkJCQkAP///8AW1tbLUlJSXFnZ2cR////AP7+/gHNzc0HDAwMpAAAAP8AAADuJycneRMTEw8PDw/AAQEB/wsLC/8AAAD6cnJyPHR0dB4AAADiAAAA/yAgIJX///8A/v7+Av///wC7u7sPgoKCRYqKii3T09MACgoKaAAAAP8BAQH4AgIC/AAAAP8vLy9GKysreQAAAP8FBQX/BwcH3LS0tAj///8A/f39Af39/QH///8A////AOzs7AYDAwPEAAAA/wAAAPsCAgL/AAAA8mtrawlMTEygAAAA/wgICP8AAADpampqGP///wD///8A/Pz8Afn5+QT+/v4B7e3tBAQEBMEAAAD/AQEB/QAAAP8TExNv////AFJSUosAAAD/AwMD/wEBAauurq4A////Av///wD///8A/v7+AP///wLv7+8AAwMDSwAAAOADAwPZAAAAZZOTkwP///8AT09PIQAAALYAAAC3oaGhIf///wD9/f0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; } }; // Стоп, при открытии настройки панелей(stop, if onDestroy) // запускаем функцию if (storage['run'] !== 'stop'){ToggleImage(event); }; // Автоматически выделить заранее введенные слова (auto Highlight words permanent) function Highlight(event) { // hide Highlight gFindBar._highlightDoc(false); // auto Highlight if (custombuttonsUtils. getPrefs ("Auto.Highlight", true)) { // getting prefs Unicode value var value = prefs.getComplexValue("Auto.Highlight.value", Components.interfaces.nsISupportsString).data; // Highlight // createMsg("value").aMsg(value); // var wordsToSearch = [value]; var wordsToSearch = value.split(" "); // createMsg("word").aMsg(wordsToSearch); while (wordsToSearch. length > 0) { gFindBar. _findField. value = wordsToSearch. shift (); gFindBar. toggleHighlight (true); } } }; // Стоп, при открытии настройки панелей(stop, if onDestroy) // запускаем функцию if (storage['run'] !== 'stop') (function () { // добавляем обработчики gBrowser.tabContainer.addEventListener("TabSelect", Highlight, false); document.addEventListener( "DOMContentLoaded", Highlight, false); })();
Отсутствует
это что такое, т.е. ты про что и что с этим делать?
Что делать? Обновляться.
При открытии окна кнопка делается «нажатой». Предыдущая версия при инициализации не проверяла, есть ли уже открытое окно.
Воспроизвести можно, если сначала открыть окно, а потом обновить кнопку.
Или можно открыть второе окно Firefox – кнопка в этом окне не будет нажатой.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher ясно.
А адрес всегда будет такой? -> http://infocatcher.ucoz.net/js/cb/window.js
И если ты будешь обновлять, то где это узнать?
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Inko7
Я попробовал и с курсором все впорядке.
custombuttons.alertSlide("Автовыделение", Avalue);
Зачем это?
prefs.setBoolPref("Auto.Highlight",0);
switchHighlight(event);
Отредактировано bunda1 (08-04-2012 18:28:50)
Отсутствует
Я попробовал и с курсором все впорядке.
Точно! Все оказалось из-за того, что кнопка расположена на всплывающем тулбаре (Popap-Toolbar!)
Интересно, как это может влиять?
custombuttons.alertSlide("Автовыделение", Avalue);
Зачем это?
prefs.setBoolPref("Auto.Highlight",0);
switchHighlight(event);
всплывает алерт с добавленным текстом и включается автовыделение, независимо от того в каком состоянии оно было
Отсутствует
всплывает алерт с добавленным текстом и включается автовыделение, независимо от того в каком состоянии оно было
custombuttons.alertSlide("Автовыделение", Avalue); prefs.setBoolPref("Auto.Highlight",true); ToggleImage(event); Highlight(event);
Отсутствует
prefs.setBoolPref("Auto.Highlight", true);
надо же еще корректно иконку кнопки переключить, а если сделать так, то switchHighlight(event); может неверно сработать
вот я и делал просто - сбрасываю параметр и switchHighlight(event); его включает и ставит нужную иконку
Может подскажешь, как все таки заставить кнопку корректно работать на всплывающем тулбаре? Или как он может влиять на отображение курсора в promtbox?
Добавлено 08-04-2012 19:49:57
custombuttons.alertSlide("Автовыделение", Avalue);
prefs.setBoolPref("Auto.Highlight",true);
ToggleImage(event); Highlight(event);
можно и так
Отредактировано Inko7 (08-04-2012 20:07:09)
Отсутствует
А адрес всегда будет такой? -> http://infocatcher.ucoz.net/js/cb/window.js
Ну, в разумных пределах. Удалять или переименовывать я пока не планирую.
И если ты будешь обновлять, то где это узнать?
Собственно, зачем обновлять, если работает? А когда (и если) сломается, это сразу видно станет, скорее всего.
Буду обновлять – отпишусь сюда.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Может подскажешь, как все таки заставить кнопку корректно работать на всплывающем тулбаре? Или как он может влиять на отображение курсора в promtbox?
Даже не представляю.
Отсутствует
Возникло предложение/просьба:
Есть расширение My foobar2000, нельзя ли сделать его, для экономии места, в виде кнопки с выпадающим меню?
Отсутствует
Возникло предложение/просьба:Есть расширение My foobar2000, нельзя ли сделать его, для экономии места, в виде кнопки с выпадающим меню?
переходи на AIMP
просто навести курсор на неё - появляется свёрнутый плеер
клик по нему и можно колёсиком регулировать громкость, и также нажимать на остальные кнопки
Отсутствует
переходи на AIMP
LongLogin
1. Он, AIMP, меня как плеер совсем не интересует
2. С таким же успехом из трея можно управлять foobar'ом
3. Просьба была, да и остаётся, о "прикручивании" функции расширения к одной кнопке в браузере
Отсутствует
klaus65 Кнопка Popap-Toolbar! (пост №142) или расширение Buttonizer - с ним проще - не надо ничего добавлять в код
... но будет ли хорошо работать гарантий дать не могу
Отредактировано Крошка Ру (09-04-2012 16:13:46)
Отсутствует
И ещё маленький вопрос, как с помощью custom buttons сделать действие равное нажатию на кнопку "delete", ну т.е. если неудобно тянуться к клавиатуре, нажал на кнопку, она сделала del
Спасибо
Отсутствует
Abricosio
Отредактировано bunda1 (10-04-2012 08:20:12)
Отсутствует