Уточню, это происходит на google images
Судя по chrome://browser/content/nsContextMenu.js из 15.0a1
// See if the user clicked on an image. if (this.target instanceof Ci.nsIImageLoadingContent && this.target.currentURI) { this.onImage = true; var request = this.target.getRequest(Ci.nsIImageLoadingContent.CURRENT_REQUEST); if (request && (request.imageStatus & request.STATUS_SIZE_AVAILABLE)) this.onLoadedImage = true; if (request && (request.imageStatus & request.STATUS_LOAD_COMPLETE)) this.onCompletedImage = true; this.mediaURL = this.target.currentURI.spec; }
, надо просто добавить проверку на наличие currentURI:
// Based on code from chrome://browser/content/nsContextMenu.js (Firefox 15.0a1) function reloadImage(img) { if(!(img instanceof Components.interfaces.nsIImageLoadingContent) || !img.currentURI) return; urlSecurityCheck(img.currentURI.spec, gBrowser.contentPrincipal, Components.interfaces.nsIScriptSecurityManager.DISALLOW_SCRIPT); img.forceReload(); } function parseWin(win) { Array.forEach(win.frames, parseWin); Array.forEach(win.document.images, reloadImage); } parseWin(content);
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Почему же у меня не работает? Нигде...
Кнопка догружает только недогруженные картинки, полностью загруженные у меня не перезагружает, что наверно и не должна делать, так как код взят из chrome://browser/content/nsContextMenu.js
Отсутствует
Ну я же не зря спрашивал > пост №4552
А как эта кнопка работает? Должна ли она перезагружать нормально загруженные картинки?
Отсутствует
Кто знает помогите советом и кодом
короче есть такая штука как тробблер, В ФФ он только и умеет крутиться а в симанки по клику по нему он открывает страницу загрузки симанки.
Для симанковцев]ну и чтоб два раза не вставать как сделать кнопочку закрытия на каждой вкладке в симанке? seatabx не пашет на последней даже после поправки инсталл рдф. есть какието решения?на амо глушняк.
Где у симанки тробблер, на табе?
Можно закривать таб двойним кликом:
// Двойной клик левой кнопкой на табе, закрыть страницу. (function () { if (this.dblclickClose) return; this.dblclickClose = true; //... gBrowser.mTabContainer.addEventListener("dblclick", function(event){ if (event.target.localName == 'tab' && event.button == 0){ event.preventDefault(); event.stopPropagation(); //закрыть страницу gBrowser.removeCurrentTab(); } }, false); })();
Или можно сделать кликом на иконку таба.
Отредактировано bunda1 (03-06-2012 20:37:30)
Отсутствует
document.getElementById("navigator-throbber").setAttribute("tooltiptext", "Поиск выделенного текста/из буфера"); document.getElementById("navigator-throbber").setAttribute("onclick", "event.stopPropagation(); handleURLBarCommand('none', event);");
или
document.getElementById("navigator-throbber").setAttribute("tooltiptext", "Поиск выделенного текста/из буфера"); document.getElementById("navigator-throbber").addEventListener("click", function(event) { if (event.button !== 0) return; event.preventDefault(); event.stopPropagation(); handleURLBarCommand('none', event); }, false);
Я твой троблер не нашел не могу проверить.
Отредактировано bunda1 (03-06-2012 21:04:15)
Отсутствует
После обновления до FF13 отвалилась вот такая кнопка (мод кнопки "Автовыделение" с поддержкой выделения нескольких слов):
/*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",true); ToggleImage(event); Highlight(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); })();
Метка времени: 06.06.2012 11:49:07
Ошибка: globalStorage is not defined
Источник: chrome://custombuttons/content/button.js?windowId=Firefox&id=custombuttons-button17@init
Строка: 35
т.е. ссылается на строку: storage = globalStorage[document.domain]
Это как-то лечится? Помогите пожалуйста!
Отсутствует
Inko7
// Кнопка для автовыделения заранее введенного текста с поддержкой нескольких слов............................................. //Объявляем 'prefs', 'clipboard' ,'alertsService', 'button'............................................. var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService); var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper); var alertsService = Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService); var button = this; // настройка функций кликов мыши (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); //Всплывающая подсказка alertsService.showAlertNotification(button.image, "Автовыделение", "Значение сброшено", false, "", null, ""); } }; // подсказка 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()"); //Стоп, при открытии настройки панелей.................................................... if (window.Inko7_AutoHighlightStop) return; // проверить наличие строк в about:config и создать если не существует (Add preferences) var f; try{ f = prefs.getBoolPref("Auto.Highlight"); } catch(e){ prefs.setBoolPref("Auto.Highlight", true); prefs.setCharPref("ui.textHighlightBackground", "#ef0fff"); 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 == "") { //Всплывающая подсказка alertsService.showAlertNotification(button.image, "Автовыделение", "Нет данных для обработки", false, "", null, ""); } else { //Всплывающая подсказка alertsService.showAlertNotification(button.image, "Автовыделение", Avalue, false, "", null, ""); prefs.setBoolPref("Auto.Highlight",true); ToggleImage(event); Highlight(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); }; // Изменить иконку кнопки................................................................. function ToggleImage(event){ 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="; } }; 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); } } }; // Стоп, при открытии настройки панелей // запускаем функцию if (!window.Inko7_AutoHighlightStop) (function () { //добавляем обработчики для табов........ gBrowser.tabContainer.addEventListener("TabSelect", function(event){ //стоп, если страница загружается if (gBrowser.mCurrentTab.hasAttribute("busy")) return; Highlight(event) }, false); gBrowser.addEventListener("pageshow", function(event){ //стоп, если открыть другие владки if (event.target.location.href !== getBrowser().currentURI.spec) return; Highlight(event) }, true); })(); //устанавливаем флаг window.Inko7_AutoHighlightStop = true;
Отсутствует
bunda1 здравствуйте.
Есть ли кнопка при нажатии на которую открывается списочек about:config, about:home и прочие aboutы
Появилась проблема с кнопкой Экспорт всех кнопок в HTML. Почему то при сохранении выдаёт окошко что Мои кнопки 9-Jun-2012 2:11.html не допустимое имя файла.
var name, image, uri; var bu = ""; var buts = document. getElementsByTagName ("toolbarbutton"); for (var i = 0; i < buts. length; i++) { if (buts [i]. getAttribute ("id"). indexOf ("custombuttons-button") == 0) { name = buts [i]. name; image = buts [i]. image || buts [i]. cbStdIcon; uri = buts [i]. URI; butmp = bu; urltmp ="<img src=" + image + "> <a href=" + uri + ">" + name +"</a><br>\n"; bu = butmp + urltmp; //alert(name); } }; butmp = bu; bu = butmp + "<hr>"; function setText (doc, nodeName, text, make_CDATASection) { var node = doc. getElementsByTagName (nodeName) [0], cds; if (!node) return; if (make_CDATASection) { try { cds = doc. createCDATASection (text || ""); } catch (e) { cds = doc. createTextNode (text || ""); } node. appendChild (cds); } else { node. textContent = text; } } var buts, doc, name, image, uri, mode, code, initCode, accelkey, help; buts = custombuttons. palette. getElementsByTagName ("toolbarbutton"); for (var i = 0; i < buts. length; i++) { if (buts [i]. getAttribute ("id"). indexOf ("custombuttons-button") == 0) { name = buts [i]. getAttribute ("label"); image = buts [i]. getAttribute ("image") || buts [i]. getAttribute ("cb-stdicon"); mode = buts [i]. getAttribute ("cb-mode"); code = buts [i]. getAttribute ("cb-oncommand"); initCode = buts [i]. getAttribute ("cb-init"); accelkey = buts [i]. getAttribute ("cb-accelkey"); help = buts [i]. getAttribute ("Help") || buts [i]. getAttribute ("help") || ""; doc = document. implementation. createDocument ("", "", null); doc. async = false; doc. load ("chrome://custombuttons/content/nbftemplate.xml"); setText (doc, "name", name, false); setText (doc, "mode", mode, false); setText (doc, "image", image, true); setText (doc, "code", code, true); setText (doc, "initcode", initCode, true); setText (doc, "accelkey", accelkey, true); setText (doc, "help", help, true); var ser = new XMLSerializer (); var data = ser. serializeToString (doc); uri = "custombutton://" + escape (data); //alert (uri); butmp = bu; urltmp ="<img src=" + image + "> <a href=" + uri + ">" + name +"</a><br>\n"; bu = butmp + urltmp; } } var uc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Components. interfaces. nsIScriptableUnicodeConverter); uc. charset = "utf-8"; bu = uc. ConvertFromUnicode (bu); var head = "<html>\n<head>\n<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>\n</head>\n<body>\n"; var fileend = "\n</body>\n</html>" var htmlSource = head + bu + fileend; var nsIFilePicker = Components.interfaces.nsIFilePicker; var fp = Components.classes["@mozilla.org/filepicker;1"] .createInstance(nsIFilePicker); fp.init(window, "", fp.modeSave); var t=new Date(); var y=1900+t.getYear(); var min=t.getMinutes(); if (min<10){min="0"+min}; var h=t.getHours(); var m=t.getMonth();switch(m){case 0: m="Jan";break;case 1: m="Feb";break;case 2: m="Mar";break;case 3: m="Apr";break;case 4: m="May";break;case 5: m="Jun";break;case 6: m="Jul";break;case 7: m="Aug";break;case 8: m="Sep";break;case 9: m="Oct";break;case 10: m="Nov";break;default: m="Dec";} var d=t.getDate(); var curdate=d+"-"+m+"-"+y+" "+h+":"+min; fp.defaultString = "Мои кнопки "+curdate+".html"; fp.appendFilters(fp.filterHTML); fp.appendFilters(fp.filterAll); if(fp.show() == fp.returnCancel) return; var stream = Components.classes['@mozilla.org/network/file-output-stream;1'] .createInstance(Components.interfaces.nsIFileOutputStream); stream.init(fp.file, 0x02|0x20|0x08, 0666, 0); stream.write(htmlSource, htmlSource.length); stream.close();
Отсутствует
bunda1 здравствуйте.
Есть ли кнопка при нажатии на которую открывается списочек about:config, about:home и прочие aboutы
Вроде нет такой кнопки, могу сделать ? Но думаю некоторые aboutы безполезны например:
about:robots
about:credits
about:license
about:rights
about:logo
Появилась проблема с кнопкой Экспорт всех кнопок в HTML. Почему то при сохранении выдаёт окошко что Мои кнопки 9-Jun-2012 2:11.html не допустимое имя файла.
У меня my_cbuttons_2012-9-Jun_3-42 и все работает.
Отредактировано bunda1 (09-06-2012 04:46:44)
Отсутствует
okkamas_knife Вчера 17:28:10
document.getElementById("dtaCtxDTA-direct").doCommand(); document.getElementById("dtaCtxTDTA-direct").doCommand();
Но это работает только если нужные пункты есть в контекстном меню на странице.
Или тут Gallery Grabber | custombuttons
Появилась проблема с кнопкой Экспорт всех кнопок в HTML. Почему то при сохранении выдаёт окошко что Мои кнопки 9-Jun-2012 2:11.html не допустимое имя файла.
var curdate=d+"-"+m+"-"+y+" "+h+":"+min;
Отредактировано bunda1 (09-06-2012 05:02:45)
Отсутствует
пункты меню добавляются копированием строчки(там всё написано)
В случае с abouts - неизящно. Плюс я понимаю, конечно, что кто-то, может быть, планирует сидеть на одной какой-то версии до скончания века, но не все же так делают - выйдет новая версия Fx, в ней окажутся новые about-страницы, придется их снова добавлять руками.
Список abouts можно получить так (примерно как в view-source:about:about):
var abouts=[]; var ios = Services.io; for (var cid in Cc) { var result = cid.match(/@mozilla.org\/network\/protocol\/about;1\?what\=(.*)$/); if (!result) continue; var aboutType = result[1]; var contract = "@mozilla.org/network/protocol/about;1?what=" + aboutType; try { var am = Cc[contract].getService(Ci.nsIAboutModule); var uri = ios.newURI("about:"+aboutType, null, null); var flags = am.getURIFlags(uri); if (!(flags & Ci.nsIAboutModule.HIDE_FROM_ABOUTABOUT)) abouts.push(uri.spec); } catch (e) {} } abouts.sort(); Services.console.logStringMessage(abouts.join("\n"));
А у меня вопрос к авторам: с 14-й версии использование восьмеричных литералов стало deprecated (см., например, тут). В результате сейчас в консоли я имею достаточно большое каличество предупреждений типа
Предупреждение SyntaxError: octal literals and octal escape sequences are deprecated
Источник: chrome://custombuttons/content/overlay.js
Строка: 968, символ: 22
Исходный код:
fis.init( file,0x01, 00004, null);
Нельзя ли это в каком-то обозримом будущем поправить? Консолью приходится пользоваться часто, и чем в ней чище, тем лучше. Я могу в установленном у меня Console2 заблокировать сообщения от домена custombuttons - но тогда я не получу и сообщений об ошибках, если такие возникнут.
Отсутствует
использование восьмеричных литералов
Причем при загрузке через mozIJSSubScriptLoader ругаться началось намного раньше.
Я вот одного не понимаю, что предлагается писать при создании папки, например?
parseInt("755", 8)
или же
493 // счастливой отладки!
Для убирания предупреждений можно выключить javascript.options.strict.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Для убирания предупреждений можно выключить javascript.options.strict
Я в курсе, но я сам часто использую именно включенный strict. Мда, какое-то несуразное нововведение...
P.S. Может быть, предополагалось теперь вместо восьмеричных литералов использовать 16-ричные? Все-таки триады в тетрады в уме переводить намного проще, чем из 10-й в 8/16-ричную. Что-то типа
file.create(Ci.nsIFile.DIRECTORY_TYPE, 0x1FF);
file.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);
Отредактировано hydrolizer (09-06-2012 11:51:30)
Отсутствует
okkamas_knife, bunda1 спасибо за помощь с Экспорт всех кнопок в HTML.
bunda1 думаю лучше иметь одну кнопу about чем несколько, поэтому сделал проще
изменил кнопку about:config на about:about
теперь все aboutы в одной кнопке
Отредактировано skynet281978 (09-06-2012 19:25:24)
Отсутствует
bunda1 думаю лучше иметь одну кнопу about чем несколько, поэтому сделал проще
изменил кнопку about:config на about:about
теперь все aboutы в одной кнопке
Хитро придумано!
Отсутствует
поэтому сделал проще
изменил кнопку about:config на about:about
теперь все aboutы в одной кнопке
и-хихи, можно закладку сделать about:about, а также about:config
LongLogin
Я так и делаю.
отож
В кнопку Session Stacked Bookmarks можно засунуть все эбауты, получится выпадающий список с ними.
можно папку создать в закладках с выпадающим списком
Отредактировано LongLogin (09-06-2012 20:55:14)
Отсутствует
изменил кнопку about:config на about:about
теперь все aboutы в одной кнопке
В кнопку Session Stacked Bookmarks можно засунуть все эбауты, получится выпадающий список с ними.
Отсутствует
voqabuhe ,А мне с будильником несподручно - свет включать надо чтобы посмотреть, да и места для него на столе нет , а часики (FlipClock) в нижнем правом углу браузера очень удобны - кинул взгляд и сразу точное время видно
а панель задач всегда чтоль скрыта?
в принципе часы можно и кнопкой реализовать. чтоб особо не морочиться то можно плюнуть на точность (изменение будет раз в минуту но не синхронно с обычными часами, в принципе обновление можно чаще поставить просто смысл зря нагружать браузер.)в инициализациюВыделить кодКод:
var _this = this; var fontcolora="#148800";//цвет var blabla; var canvas = document. createElementNS ("http://www.w3.org/1999/xhtml", "canvas"); canvas. setAttribute ("id", "canvas"); canvas. setAttribute ("style", "min-width:20px;width:45px;max-width:45px;min-height:24px;height:24px;max-height:24px;"); canvas. setAttribute ("width", "45"); canvas. setAttribute ("height", "24"); _this. appendChild (canvas); _this. image = "data:"; _this. setAttribute ("class", ""); var pn = _this. parentNode; var ns = _this. nextSibling; var button = pn. removeChild (this); if (ns) pn. insertBefore (button, ns); else pn. appendChild (button); function draw() { var ctx = canvas.getContext('2d'); ctx.save(); ctx. clearRect (0, 0, 50, 24); ctx.restore(); var width = canvas.width; var height = canvas.height; var ctx = canvas.getContext('2d'); ctx.save(); ctx.translate(3,18); // смещение ctx.fillStyle = fontcolora; ctx.mozTextStyle = "14pt sans serif"; //шрифт ctx.fillText(blabla,0,0); ctx.restore(); } function gettime(){ var t=new Date(); var min=t.getMinutes(); if (min<10){min="0"+min}; var h=t.getHours(); if (h<10){h="0"+h}; blabla=h+":"+min; draw(); ;} gettime(); clearInterval(intervalID); intervalID = setInterval(gettime, 60000); //время обновления в мс (1сек = 1000)
а панель задач всегда чтоль скрыта?
okkamas_knife ,Да Добавлено Сегодня 07:42:24в принципе часы можно и кнопкой реализовать.выглядит неплохо ... а что, отображение секунд так сильно загружают браузер ? Вообще-то уже пробовал как-то пару кнопочек, но там величина цифр была слишком маленькая и с настройкой вида и цвета шрифта муторно было бы разбираться
.... а вот эти > Clock кроме наличия секунд ещё и при наведении курсора показывают день недели, число, месяц и год .... только там цифры мелкие
а тебе так важны секунды?просто не вижу смысла тратить ресурсы машины на всякую ерунду.
okkamas_knife, Конечно такой уж жизненно важной необходимости в этом нет, но всё же на восприятие времени влияет, да и бывает необходимо знать - сейчас начало минуты или конец
это всё также элементарно реализуется попроси кого нибуть в теме кнопок допилитьмне просто лень да и голова другим забита чтоб переключаться. я те часики за неск минут слепил из кнопки погоды выкинув лишнее и вставив всего
несколько строчекВыделить кодКод:
function gettime(){ var t=new Date(); var min=t.getMinutes(); if (min<10){min="0"+min}; var h=t.getHours(); if (h<10){h="0"+h}; blabla=h+":"+min; draw(); ;} gettime(); clearInterval(intervalID); intervalID = setInterval(gettime, 60000); //время обновления в мс (1сек = 1000)
а тебе так важны секунды?просто не вижу смысла тратить ресурсы машины на всякую ерунду.
okkamas_knife, Конечно такой уж жизненно важной необходимости в этом нет, но всё же на восприятие времени влияет, да и бывает необходимо знать - сейчас начало минуты или конец
Выделить кодКод:
добавляем после var min=t.getMinutes(); if (min<10){min="0"+min}; это var sec=t.getSeconds(); if (sec<10){sec="0"+sec}; и правим blablba=h+":"+min+":"+secскорость обновления выставляем в 1 секунду
ну а размеры кнопочки смотри вверху и подстраивай как нужно. там увидишь где width итп
до кучи
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date
чтоб понять что какая функция выдаёт делай такvar t = new Date();
var a=t.getFullYear();
alert(a)
Крошка Ру Или вот немецкие часики для панели дополнений
В любую Custom Buttons кнопку, в инициализацию.скрытый текстВыделить кодКод:
function Clock() { var days = ["So","Mo", "Di", "Mi", "Do", "Fr", "Sa"]; var months = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]; var D = new Date(); var day = days[D.getDay()]; var month = months[D.getMonth()]; var year = D.getFullYear(); var hours = D.getHours(); var min = D.getMinutes(); var sec = D.getSeconds(); var Time = ((hours < 10) ? "0" : "") + hours; Time += ((min < 10) ? ":0" : ":") + min + ((sec < 10) ? ":0" : ":") + sec; Time += " Uhr"; var date = day + ", " + ((D.getDate()<10) ? "0" : "") + D.getDate() + "."+ month + "." + year; var timestr = date + " - " + Time; var status = document.getElementById("statusbar-clock-display"); status.setAttribute("value", timestr); var clockstyle = "padding-top: 2px;" if (hours < 6 || hours > 22) { clockstyle += "color: #ff0000;"; } else { clockstyle += "color: #000000;"; } status.setAttribute("style", clockstyle); // Timeout variabel - damit Umschalten zur vollen Minute: setTimeout(function() { Clock() }, 1000); //(60- sec)*1000) } var ClockStatus = document.getElementById("addon-bar").lastChild; var ClockLabel = document.createElement("label"); ClockLabel.setAttribute("id", "statusbar-clock-display"); ClockLabel.setAttribute("class", "statusbarpanel-text"); // *vor* dem letzten Kindelement (s.o.) einfuegen - damit ist Uhr immer ganz rechts: ClockStatus.parentNode.insertBefore(ClockLabel, ClockStatus.previousSibling); Clock();
Добавлено 18-06-2012 23:54:47
okkamas_knife, запутался что перед/после чего и куда добавлять
bunda1, сейчас попробую
Добавлено 19-06-2012 00:11:16
На этих цифры мелковаты по сравнению с FlipClock
и часами,предложенными okkamas_knife
var _this = this; var fontcolora="#148800";//цвет var blabla; var canvas = document. createElementNS ("http://www.w3.org/1999/xhtml", "canvas"); canvas. setAttribute ("id", "canvas"); canvas. setAttribute ("style", "min-width:20px;width:45px;max-width:45px;min-height:24px;height:24px;max-height:24px;"); canvas. setAttribute ("width", "45"); canvas. setAttribute ("height", "24"); _this. appendChild (canvas); _this. image = "data:"; _this. setAttribute ("class", ""); var pn = _this. parentNode; var ns = _this. nextSibling; var button = pn. removeChild (this); if (ns) pn. insertBefore (button, ns); else pn. appendChild (button); function draw() { var ctx = canvas.getContext('2d'); ctx.save(); ctx. clearRect (0, 0, 50, 24); ctx.restore(); var width = canvas.width; var height = canvas.height; var ctx = canvas.getContext('2d'); ctx.save(); ctx.translate(3,18); // смещение ctx.fillStyle = fontcolora; ctx.mozTextStyle = "14pt sans serif"; //шрифт ctx.fillText(blabla,0,0); ctx.restore(); } function gettime(){ var t=new Date(); var min=t.getMinutes(); if (min<10){min="0"+min}; var h=t.getHours(); if (h<10){h="0"+h}; blabla=h+":"+min; draw(); ;} gettime(); clearInterval(intervalID); intervalID = setInterval(gettime, 60000); //время обновления в мс (1сек = 1000)
и строчка слишком длинная - лучше если дата появляется во всплывающей подсказке как у этих
Отредактировано Крошка Ру (19-06-2012 00:16:39)
Отсутствует
ты не морочь людям голову а попробуй научиться сам...
okkamas_knife, Да я и не морочу - люди сами же предлагают
...там несложно методом тыка и копипасты ты вполне в состоянии сам соорудить такие часы которые ТЕБЕ нужны.
попробуй для начала сделать то что я написал и получить часы с секундами
потом можно будет добавить дату во всплывающей подсказке(это тоже просто если не я то кто нибудь да подскажет).
надо не давать рыбу а показать как её ловить. тогда будешь есть ту рыбу которую захочешь а не которую дал прохожий.
Обеими руками "за" - полностью согласен
------
Кстати , такая идея - Менеджер - графический редактор кнопок
Что думает на этот счёт почтеннейшая публика ?
Отредактировано Крошка Ру (19-06-2012 02:45:57)
Отсутствует
okkamas_knife ,bunda1 ,Код подправил
/*Initialization Code*/ this.setAttribute("style", " -moz-appearance: none; font-size: 12pt !important; color: #000000 !important; background-color: !important; border-width: 0px !important; border-color: #4444aa !important;-moz-border-radius: 4px; margin-left: 5px !important; margin-top: 7px !important; margin-bottom: 7px !important; padding-bottom: 0px !important; padding-left: 2px !important; padding-right: 2px !important; padding-top: 0px !important; "); this.style.opacity = "0.99"; this.onmouseover = function(event) { var ttTime = new Date(); var p = (ttTime. getHours () < 12)? "AM": "PM"; var time = ttTime. toLocaleFormat ("%I:%M:%S ") + p; var date = ttTime. toLocaleFormat ("%A, %B %d, %Y"); this.tooltipText = date ; /* var mydatestr = ttTime.toDateString(); var myday = mydatestr.substring(0,3); var mymonth = mydatestr.substring(4,7); var mydate = mydatestr.substring(7,11); var myyear = mydatestr.substring(10,mydatestr.length); this.tooltipText = myday + mydate + mymonth + myyear; */ } // Comment out these next two lines to start as a twelve hour clock var TwelveHourClock = 0; var timesign = ":"; var timetick = ";" var timetick1 = ":"; var timetick2 = "."; this.leftclick = function(event) { if(TwelveHourClock == 0) { TwelveHourClock = 12; } else { TwelveHourClock = 0; } } var beginTime = new Date(); var now = new Date(); var offset = now.getTimezoneOffset(); var myGMToffset = (offset/60)*-1; function count(t) { var millisecond = t.getTime(); var hour = Math.floor(millisecond % 86400000 / 3600000) + myGMToffset; if(TwelveHourClock == 12) { if(hour >= 13) { hour = hour - TwelveHourClock ; } else { morneve = "AM"; } if(hour >= 12) {morneve = "PM"; }; } else { if(hour >= 24) {hour = hour - 24} } var minute = Math.floor(millisecond % 3600000 / 60000); var second = Math.floor(millisecond % 3600000 % 60000 / 1000); hour = (hour < 10 ? "0" : "") + hour; minute = (minute < 10 ? "0" : "") + minute; second = (second < 10 ? "0" : "") + second; if(TwelveHourClock == 0){timesign = timetick1}else{timesign = timetick2} return hour + timesign + minute + timesign + second; } setInterval(function(that) { var currentTime = new Date(); that.label = count(currentTime); }, 10, this); var ios = Components.classes["@mozilla.org/network/io-service;1"]. getService(Components.interfaces.nsIIOService); var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]. getService(Components.interfaces.nsIStyleSheetService); var css = new String(); css += "#" + this.id + " .toolbarbutton-icon { display: none !important; }\n"; css += "#" + this.id + " .toolbarbutton-text { display: -moz-box !important; }\n"; css += "#" + this.id + " { -moz-box-orient: horizontal !important; }"; var uss = ios.newURI("data:text/css," + encodeURIComponent(css), null, null); // comment out the next line to disable style if (!sss.sheetRegistered(uss, sss.USER_SHEET)) sss.loadAndRegisterSheet(uss, sss.USER_SHEET); this.onDestroy = function(reason) { if (reason == "update") { var uss = ios.newURI("data:text/css," + encodeURIComponent(css), null, null); if (sss.sheetRegistered(uss, sss.USER_SHEET)) sss.unregisterSheet(uss, sss.USER_SHEET); } if (reason == "delete") { var uss = ios.newURI("data:text/css," + encodeURIComponent(css), null, null); if (sss.sheetRegistered(uss, sss.USER_SHEET)) sss.unregisterSheet(uss, sss.USER_SHEET); } } this. onclick = function (event) { custombuttons. gQuot. mHandler (event); } this. ondblclick = function (event) { custombuttons. gQuot. mHandler (event); } this.setAttribute('author','squeaky,Barbiegirl,morat'); this.setAttribute('version','20110408.2.5'); this.setAttribute('homepage', 'http://custombuttons.mozdev.org/drupal/content/button-clock');
а можно поподробнее?
что это? для чего? и как это видится в плане интерфейса?
okkamas_knife, Только в общих чертах представляю себе - у каждой кнопки своя вкладка настроек где можно менять параметры не залезая в её код , сохранять выбранные кнопки в файл , может даже функции конструктора - возможность собрать кнопку используя готовые шаблоны
И ещё для тех кодов, которые предлагается помещать в любую кнопку - чтобы не запутаться можно их упорядочить (объединить?) каким-то образом посредством менеджера.
Ещё бы файл userChrome.css через графический интерфейс редактировать ....
Отредактировано Крошка Ру (19-06-2012 04:16:41)
Отсутствует
но как буковки во всплывающем окошечке увеличить - не знаю
Подсказка, заданная через атрибут tooltipText, отображается в стандартном системном тултипе и стандартным системным стилем. Поэтому вариантов два: убирать системную отрисовку у стандартного тултипа, либо использовать для тултипа xul:tooltip (который легко стайлится). Второе - намного проще (и правильнее).
И да, для подобных задач лучшие собаководы рекомендуют использовать не window.setInterval, а nsITimer с соответствующим типом работы, заданным при инициализации.
Отредактировано hydrolizer (19-06-2012 03:54:14)
Отсутствует
Подсказка, заданная через атрибут tooltipText, отображается в стандартном системном тултипе и стандартным системным стилем. Поэтому вариантов два: убирать системную отрисовку у стандартного тултипа, либо использовать для тултипа xul:tooltip (который легко стайлится). Второе - намного проще (и правильнее).
И да, для подобных задач лучшие собаководы рекомендуют использовать не window.setInterval, а nsITimer с соответствующим типом работы, заданным при инициализации.
hydrolizer ,Спасибо, осталось только всё это понять
молодец!
okkamas_knife ,Спасибо
Отсутствует