// Вывод названия страницы на кнопку this.__defineSetter__("title", function(val) { if(val == this.__savedTitle) return; this.__savedTitle = val; this.setAttribute("label", val); this.tooltipText = val; }); var titleUpdater = { button: this, handleEvent: function(e) { if(e.attrName != "title" || e.originalTarget != document.documentElement) return; this.button.title = e.newValue; //setTimeout(function() { throw new Error(">> " + e.newValue); }, 0); } }; document.documentElement.addEventListener("DOMAttrModified", titleUpdater, true); this.__savedTitle = this.title = document.title; var sId = "__customButtonsStyle__" + this.id; // Unique style "id" var cssStr = '\ %button% {\n\ color: windowText !important;\n\ text-shadow: window 2px -2px 4px, window -2px 2px 4px, window -2px -4px 4px, window 2px 4px 4px !important;\n\ -moz-box-align: start !important;\n\ \n\ background: transparent !important;\n\ -moz-box-shadow: none !important;\n\ -moz-appearance: none !important;\n\ border: none !important;\n\ /* width: auto !important; */\n\ width: 550px !important;\n\ }\n\ %button% > image {\n\ display: none !important;\n\ }\n\ %button% > label {\n\ display: -moz-box !important;\n\ }\n\ ' .replace(/%button%/g, "#" + this.id); function sheet(cssStr, removeFlag) { var cc = Components.classes; var sss = cc["@mozilla.org/content/style-sheet-service;1"] .getService(Components.interfaces.nsIStyleSheetService); var ios = cc["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var data = "data:text/css," + encodeURIComponent(cssStr); var uri = ios.newURI(data, null, null); if(sss.sheetRegistered(uri, sss.USER_SHEET)) sss.unregisterSheet(uri, sss.USER_SHEET); if(removeFlag) return; sss.loadAndRegisterSheet(uri, sss.USER_SHEET); window[sId] = cssStr; } if(!(sId in window)) sheet(cssStr); else if(window[sId] != cssStr) { sheet(window[sId], true); sheet(cssStr); }
можно как-то поправить?
Отсутствует
Indomito пишетКак бы сделать так, что-бы по ПКМ на пункте из списка не было автоскрытия...
Вот пример: code_snippets/autoOpenCloseMenu.js
думал не сработает т.к. я слепил два кода последовательно... не работает - спасибо.
А "подводных камней" нет? На версии 28.0.1 не проверял.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Infocatcher а как поменять стандартный значек у подпапки в контексте твоей кнопки?
Я всё перепробовал... ну почти всё
Отредактировано Indomito (20-05-2014 09:59:43)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
// Вывод названия страницы на кнопку
А с этой версией как?
думал не сработает т.к. я слепил два кода последовательно... не работает - спасибо.
Так работает или нет?
А "подводных камней" нет? На версии 28.0.1 не проверял.
В старых версиях document.popupNode не сбрасывается автоматически в null после закрытия контекстного меню, а так должно работать начиная с 1.5.
как поменять стандартный значек у подпапки в контексте твоей кнопки?
menu.bookmark-item[label="Имя папки"] { list-style-image: url("ссылка на иконку") !important; -moz-image-region: auto !important; }
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Так работает или нет?
работает, ошибок не заметил.
Код в кнопку "лепить"
menu.bookmark-item[label="Имя папки"] { list-style-image: url("ссылка на иконку") !important; -moz-image-region: auto !important; }
или куда?
Если в кнопку то в начало или конец секции инициализации?
И можно как то в виде массива сделать BASE64, а не через URL ?
Добавлено 20-05-2014 11:02:05
используй стили
вопрос тот же куда код поставить + со стилями я не работал, хочется в контексте одной кнопки.
Отредактировано Indomito (20-05-2014 11:02:05)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
А с этой версией как?
всё норм. спасибо.
Отсутствует
И можно как то в виде массива сделать BASE64, а не через URL ?
Ссылка может быть любая, в том числе и data:image/png;base64,...
И если через userChrome.css, можно использовать относительные ссылки.
хочется в контексте одной кнопки.
Вот пример, добавлять в инициализацию:
setTimeout(function() { var cssStr = ('\ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");\n\ @-moz-document url("' + document.documentURI + '") {\n\ %button% menu.bookmark-item[label="Имя папки"] {\n\ list-style-image: url("' + self.image + '") !important;\n\ -moz-image-region: auto !important;\n\ }\n\ }') .replace(/%button%/g, "#" + self.id); var cssURI = Services.io.newURI("data:text/css," + encodeURIComponent(cssStr), null, null); var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"] .getService(Components.interfaces.nsIStyleSheetService); if(!sss.sheetRegistered(cssURI, sss.USER_SHEET)) sss.loadAndRegisterSheet(cssURI, sss.USER_SHEET); addDestructor(function(reason) { if(reason == "update" || reason == "delete") { if(sss.sheetRegistered(cssURI, sss.USER_SHEET)) sss.unregisterSheet(cssURI, sss.USER_SHEET); } }); }, 50);
Вместо «url("' + self.image + '")» можно сразу вписывать «url("data:image/png;base64,...")».
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher встречный вопрос.
Это я понимаю для каждой папки? В пределах одной функции?
А если массивом?
Я про фрагмент кода, я бы правил, но боюсь поломать конструкцию.
var cssStr = ('\ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");\n\ @-moz-document url("' + document.documentURI + '") {\n\ %button% menu.bookmark-item[label="Имя папки"] {\n\ list-style-image: url("' + self.image + '") !important;\n\ -moz-image-region: auto !important;\n\ }\n\ }')
А этот код
menu.bookmark-item[label="Имя папки"] { list-style-image: url("ссылка на иконку") !important; -moz-image-region: auto !important; }
не сработал, в секции инициализации, в начале описания переменных.
Отредактировано Indomito (20-05-2014 12:20:23)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Добавлено 20-05-2014 12:07:01
Pony_Smile_Pack это не то, мне нужно сохранять иконки в контексте кнопки, т.к. я их экспортирую используя свою же кнопку FF Exp Imp CB (см. готовые кнопки)
А если использовать твой метод, то проще использовать userChrome.css
/* set default namespace to XUL */ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* Спрятать иконки в персональной панели */ toolbarbutton.bookmark-item > .toolbarbutton-icon { display: none; } /* Сменить иконки в закладках на собственные */ toolbarbutton.bookmark-item { list-style-image: url('the\path\to\yourimage.xxx') !important; -moz-image-region: rect(0px 16px 16px 0px) !important; } toolbarbutton.bookmark-item[container="true"] { list-style-image: url('the\path\to\yourimage.xxx') !important; -moz-image-region: rect(0px 16px 16px 0px) !important; }
Отредактировано Indomito (20-05-2014 12:25:13)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Я обновился до 29 версии и теперь наблюдаю неприятные вещи.
Раньше, если была ошибка в коде кнопки, в консоли можно было увидеть, в какой именно кнопке, и можно было кликнуть и именно эта кнопка открывалась в редакторе. И даже строка с ошибкой уже подсвечена.
А сейчас, в какой бы кнопке какая бы ни была ошибка, в консоли всегда ссылка на некий файл размером 55 байт. id кнопки правда в ссылке видно
а в файле одна строчка
Это как?
Отсутствует
okkamas_knife
А эту кнопку на 29 можно починить, а то после первого вызова пункта нужно браузер перезагружать чтобы вызвать другой.
https://forum.mozilla-russia.org/viewto … 08#p527108
Отредактировано villa7 (20-05-2014 20:49:53)
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
villa7
у меня работает нормально. на всякий
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%3E%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%20%u043D%u0438%u0436%u043D%u0435%u0439%20%u043F%u0430%u043D%u0435%u043B%u0438%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABxUlEQVR4XqWRP2oVURSHvztzXyZg/ENiZ2NjOsUtCHYuQndh4QIs3YCbsLBRwQUIgpViIQQFQdTE5M2bNzPnj+cy7zGFgRT+4OM7d5hzONybbj89enVwrbkngzO0wtBpEF7N9bgOr5SxG5HesF5wWePd0dt0//nP9d3D/ebkBJan0LZwVhwsC2ewCrpgHWdrAQcMaF/2eX83jbf2aE6BdRNcDq5Ctw534dXGhRaGHsyhwvn8IY/58MB5dAfcAcK2MYDPtRmoGmqKidMs4OGTilwDi4o5NefG3RFxzILsNDXkysmYclFKk4iFDdVpSAWohvWCfndH1cIW3g5RrOBGFjF+LwcS6fy1tWBTg3kxGl7UMIqSv/5oefbiGHX+SUrz0Lmciku7Fcetkm9c3+Xxg5uMNk9wKxjmHiZsQVgddwvgyo7x7s1Hcq5gr6mYA5ijmhDV0oSaIhIm8Onb2AcG2efdcWd704EhYrgXl/OMmYNPVME2mG1/sOLtC2ybwrZxYIYDuQ5Nceo6SAZiaA6JYmlaXcxY4NMTVrCTy0sk8uv3v+Tb9z/Sr0ZkEKQfkHEMK1o8FAQVAQdnSl0lPn05keTu/E/+ApLnoYXyGb2zAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20icon%20%3D%20document.getAnonymousElementByAttribute%28%20this%2C%20%27class%27%2C%20%27toolbarbutton-icon%27%29%3B%0Aicon.style.width%20%3D%20%2716px%27%2C%20icon.style.height%20%3D%20%2716px%27%3B%0A%0Athis.bottomPanel%20%3D%20function%28aURL%29%20%7B%0A%20%20var%20prefBranch%20%3D%20%22custombuttons.bottomPanel.%22%0A%0A%20%20if%28%21aURL%20%26%26%20aURL%20%21%3D%20%22%22%29%20%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20aURL%20%3D%20gPrefService.getCharPref%28prefBranch%20+%20%22url%22%29%3B%0A%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20aURL%20%3D%20%22%22%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20if%28aURL%20%3D%3D%20%22%22%29%20return%3B%0A%0A%20%20if%28aURL%20%3D%3D%20gURLBar.value%20%26%26%20%21aURL.match%28/%5E%5Cw+%3F%5C%3A/%29%29%20aURL%20%3D%20%22http%3A//%22%20+%20aURL%3B%0A%0A%20%20var%20panelID%20%3D%20%22bottom-panel%22%3B%0A%20%20var%20gPanel%20%3D%20document.getElementById%28panelID%29%3B%0A%20%20var%20height%3B%0A%20%20try%20%7B%0A%20%20%20%20height%20%3D%20gPrefService.getIntPref%28prefBranch%20+%20%22height%22%29%3B%0A%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20height%20%3D%20400%3B%0A%20%20%7D%0A%0A%20%20if%28gPanel%29%20%7B%0A%0A%20%20%20%20var%20src%20%3D%20gPanel.firstChild.nextSibling.getAttribute%28%22src%22%29%3B%0A%20%20%20%20if%28aURL%20%21%3D%20src%29%20%7B%0A%20%20%20%20%20%20gPanel.firstChild.nextSibling.setAttribute%28%22src%22%2C%20aURL%29%3B%0A%20%20%20%20%20%20//gPanel.firstChild.nextSibling.loadURI%28aURL%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20gPrefService.setIntPref%28prefBranch%20+%20%22height%22%2C%20gPanel.height%29%3B%0A%20%20%20%20%20%20gPanel.parentNode.removeChild%28gPanel.previousSibling%29%3B%0A%20%20%20%20%20%20gPanel.parentNode.removeChild%28gPanel%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%7D%20else%20%7B%0A%0A%20%20%20%20var%20appContent%20%3D%20document.getElementById%28%22appcontent%22%29%3B%0A%0A%20%20%20%20var%20spl%20%3D%20appContent.appendChild%28document.createElement%28%22splitter%22%29%29%3B%0A%20%20%20%20%20%20%20%20spl.setAttribute%28%22collapse%22%2C%20%22after%22%29%3B%0A%20%20%20%20%20%20%20%20spl.style.border%20%3D%20%22none%22%3B%0A%20%20%20%20%20%20%20%20spl.style.borderTop%20%3D%20%221px%20solid%20threedhighlight%22%3B%0A%20%20%20%20%20%20%20%20spl.setAttribute%28%22onclick%22%2C%20%22this.setAttribute%28%27state%27%2C%20%27%27%29%3B%22%29%3B%0A%0A%20%20%20%20var%20box%20%3D%20appContent.appendChild%28document.createElement%28%22hbox%22%29%29%3B%0A%20%20%20%20%20%20%20%20box.id%20%3D%20panelID%3B%0A%20%20%20%20%20%20%20%20box.height%20%3D%20height%3B%0A%20%20%20%20%20%20%20%20box.orient%20%3D%20%22vertical%22%3B%0A%0A%20%20%20%20var%20tbr%20%3D%20box.appendChild%28document.createElement%28%22toolbar%22%29%29%3B%0A%20%20%20%20%20%20%20%20tbr.setAttribute%28%22fullscreentoolbar%22%2C%20true%29%3B%0A%0A%20%20%20%20var%20spr%20%3D%20tbr.appendChild%28document.createElement%28%22spacer%22%29%29%3B%0A%20%20%20%20%20%20%20%20spr.setAttribute%28%22flex%22%2C%201%29%3B%0A%0A%20%20%20%20var%20btn%20%3D%20tbr.appendChild%28document.createElement%28%22toolbarbutton%22%29%29%3B%0A%20%20%20%20%20%20%20%20btn.style.listStyleImage%20%3D%20%22url%28chrome%3A//global/skin/icons/Minimize.gif%29%22%3B%0A%20%20%20%20%20%20%20%20btn.minimize%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20gPanel%20%3D%20document.getElementById%28%22bottom-panel%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20gPanel.previousSibling.setAttribute%28%22state%22%2C%20%22collapsed%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20btn.setAttribute%28%22oncommand%22%2C%20%22this.minimize%28%29%22%29%3B%0A%0A%20%20%20%20var%20btc%20%3D%20tbr.appendChild%28document.createElement%28%22toolbarbutton%22%29%29%3B%0A%20%20%20%20%20%20%20%20btc.className%20%3D%20%22tabs-closebutton%22%3B%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20btc.closePanel%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20gPanel%20%3D%20document.getElementById%28%22bottom-panel%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20gPrefService.setIntPref%28prefBranch%20+%20%22height%22%2C%20gPanel.height%29%3B%0A%20%20%20%20%20%20%20%20%20%20gPanel.parentNode.removeChild%28gPanel.previousSibling%29%3B%0A%20%20%20%20%20%20%20%20%20%20gPanel.parentNode.removeChild%28gPanel%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20btc.setAttribute%28%22id%22%2C%20%22closeBottomPanel%22%29%3B%0A%20%20%20%20%20%20%20%20btc.setAttribute%28%22oncommand%22%2C%20%22this.closePanel%28%29%22%29%3B%0A%0A%20%20%20%20var%20ifr%20%3D%20box.appendChild%28document.createElement%28%22browser%22%29%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22type%22%2C%20%22content%22%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22flex%22%2C%201%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22src%22%2C%20aURL%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22tooltip%22%2C%20%22aHTMLTooltip%22%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22onclick%22%2C%20%22return%20contentAreaClick%28event%2C%20true%29%22%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22autocompletepopup%22%2C%20%22PopupAutoComplete%22%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22contextmenu%22%2C%20%22contentAreaContextMenu%22%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22contentcontextmenu%22%2C%20%22contentAreaContextMenu%22%29%3B%0A%20%20%7D%0A%0A%20%20gPrefService.setCharPref%28prefBranch%20+%20%22url%22%2C%20aURL%29%3B%0A%0A%7D%20%20%0A//------------------------------------%0Athis.getFile%20%3D%20function%28%29%20%7B%0A%20%20try%20%7B%0A%20%20%20%20const%20nsIFilePicker%20%3D%20Components.interfaces.nsIFilePicker%3B%0A%20%20%20%20var%20fp%20%3D%20Components.classes%5B%27@mozilla.org/filepicker%3B1%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28nsIFilePicker%29%3B%0A%20%20%20%20fp.init%28window%2C%20gNavigatorBundle.getString%28%22openFile%22%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nsIFilePicker.modeOpen%29%3B%0A%20%20%20%20fp.appendFilters%28nsIFilePicker.filterAll%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nsIFilePicker.filterText%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nsIFilePicker.filterImages%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nsIFilePicker.filterXML%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nsIFilePicker.filterHTML%29%3B%0A%20%20%20%20if%28fp.show%28%29%20%3D%3D%20nsIFilePicker.returnOK%29%0A%20%20%20%20%20%20return%20fp.fileURL.spec%3B%0A%20%20%20%20else%20return%20%22%22%3B%0A%20%20%7D%20catch%20%28ex%29%20%7B%0A%20%20%7D%0A%7D%0A%0A//------------------------------------%0A%0A%0Afunction%20addMenuitem%28aLabel%2C%20aURL%2C%20aNode%2C%20aObjString%29%20%7B%0A%20%20var%20mItem%20%3D%20aNode.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20mItem.setAttribute%28%22label%22%2C%20aLabel%29%3B%0A%20%20mItem.setAttribute%28%22oncommand%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aObjString%20+%20%22.bottomPanel%28%27%22%20+%20aURL%20+%20%22%27%29%3B%22%29%3B%0A%7D%0A%0A%0Afunction%20addSeparator%28aNode%2C%20aNum%29%20%7B%0A%20%20var%20separator%20%3D%20aNode.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0A%20%20separator.id%20%3D%20%22bottom-panel-button-separator%22%20+%20aNum%3B%0A%7D%0A%0Avar%20mPopup%20%3D%20document.createElement%28%22menupopup%22%29%3B%0AmPopup.setAttribute%28%22oncommand%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0AmPopup.setAttribute%28%22onpopupshowing%22%2C%20%22this.parentNode.popupShowing%28this%29%22%29%3B%0A%0A%0AobjString%20%3D%20%22this.parentNode.parentNode%22%3B%0AaddMenuitem%28%22about%3Aconfig%22%2C%20%22about%3Aconfig%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22about%3Asupport%22%2C%20%22about%3Asupport%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22Error%20Console%22%2C%20%22chrome%3A//global/content/console.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22about%3Amemory%22%2C%20%22about%3Amemory%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22about%3Aplugins%22%2C%20%22about%3Aplugins%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22about%3Acache%22%2C%20%22about%3Acache%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22about%3Acache%3Fdevice%3Ddisk%22%2C%20%22about%3Acache%3Fdevice%3Ddisk%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22about%3Acache%3Fdevice%3Dmemory%22%2C%20%22about%3Acache%3Fdevice%3Dmemory%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22about%3Acache%3Fdevice%3Doffline%22%2C%20%22about%3Acache%3Fdevice%3Doffline%22%2C%20mPopup%2C%20objString%29%3B%0A%0AaddSeparator%28mPopup%2C%200%29%3B%0AaddMenuitem%28%22%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%22%2C%20%22chrome%3A//browser/content/preferences/preferences.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0414%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u044F%22%2C%20%22chrome%3A//mozapps/content/extensions/extensions.xul%3Ftype%3Dextensions%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u041C%u0435%u043D%u0435%u0434%u0436%u0435%u0440%20%u041F%u0430%u0440%u043E%u043B%u0435%u0439%22%2C%20%22chrome%3A//passwordmgr/content/passwordManager.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0423%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20Cookies%22%2C%20%22chrome%3A//browser/content/preferences/cookies.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22DOM%20Inspector%22%2C%20%22chrome%3A//inspector/content/inspector.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddSeparator%28mPopup%2C%200%29%3B%0AaddMenuitem%28%22%u0417%u0430%u0433%u0440%u0443%u0437%u043A%u0438%22%2C%20%22chrome%3A//mozapps/content/downloads/downloads.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0417%u0430%u043A%u043B%u0430%u0434%u043A%u0438%22%2C%20%22chrome%3A//browser/content/bookmarks/bookmarksPanel.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0418%u0441%u0442%u043E%u0440%u0438%u044F%22%2C%20%22chrome%3A//browser/content/history/history-panel.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0423%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%u043C%u0438%22%2C%20%22chrome%3A//browser/content/places/places.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddSeparator%28mPopup%2C%200%29%3B%0A%0Avar%20homePages%20%3D%20gHomeButton.getHomePage%28%29.split%28%22%7C%22%29%3B%0Avar%20homePage%20%3D%20homePages%5B0%5D%3B%0A%0AaddMenuitem%28%22%u0414%u043E%u043C%u0430%u0448%u043D%u044F%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%22%2C%20homePage%2C%20mPopup%2C%20objString%29%3B%0A%0AaddMenuitem%28%22%u0422%u0435%u043A%u0443%u0449%u0430%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%22%2C%20%22%27%20+%20content.location.href%20+%20%27%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u0438%u0441%u0445%u043E%u0434%u043D%u044B%u0439%20%u043A%u043E%u0434%22%2C%20%22view-source%3A%27%20+%20content.location.href%20+%27%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0444%u0430%u0439%u043B%22%2C%20%22%27%20+%20this.parentNode.parentNode.getFile%28%29%20+%20%27%22%2C%20mPopup%2C%20objString%29%3B%0A%0A%0Athis.appendChild%28mPopup%29%3B%0Athis.type%20%3D%20%22menu%22%3B%0Athis.orient%20%3D%20%22horizontal%22%3B%0A%0A%0Afunction%20handleKeydown%28e%29%20%7B%20%0A%20%20if%20%28%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.ctrlKey%20%26%26%20e.keyCode%20%3D%3D%2027%20%29%20%7B%0A%20%20%20%20%20%20%20if%20%28%20%21document.getElementById%28%27closeBottomPanel%27%29%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20document.getElementById%28%27closeBottomPanel%27%29.click%28%29%3B%0A%20%20%20%20%20%20%20%7D%3B%20%20%0A%7D%0Awindow.addEventListener%28%27keydown%27%2C%20handleKeydown%2C%20false%29%3B%0A%0A%0A//%20%u0443%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u0435%u043C%20%u0444%u043B%u0430%u0433%2C%20%u0447%u0442%u043E%u0431%u044B%20%u0444%u0443%u043D%u043A%u0446%u0438%u0438%20%u0438%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u0438%20%u043D%u0435%20%u0438%u0441%u043F%u043E%u043B%u043D%u044F%u043B%u0430%u0441%u044C%20%u0434%u0432%u0430%u0436%u0434%u044B%20%20%0Athis.setAttribute%28%22stop%22%2C%22true%22%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.bottomPanel%28%29%3B%0A%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%5Bnull%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отсутствует
villa7
а! если последовательность "открыли окно - закрыли окно - попытались снова открыть окно", то да, больше не работает. Но если "открыть окно - открыть следующее окно - открыть следующее окно - ...", то окна открываются.
Нужен фикс.
Отредактировано >ORG@niZM< (21-05-2014 08:44:18)
Отсутствует
Infocatcher встречный вопрос.
Это я понимаю для каждой папки? В пределах одной функции?А если массивом?
Так а что нужно получить? Свои иконки для каждой папки?
Тогда в любом случае придется тем или иным способом копировать вот эти строки:
%button% menu.bookmark-item[label="..."] {\n\ list-style-image: url("...") !important;\n\ -moz-image-region: auto !important;\n\ }\n\
P.S. Тут еще подсказывают, что стиль не удалится при убирании кнопки с панели.
Если это критично, можно использовать document.createProcessingInstruction() или nsIDOMWindowUtils.loadSheet() (и уже без проверок на reason в деструкторе).
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
А как с моим вопросом https://forum.mozilla-russia.org/viewto … 09#p652409 ?
Отсутствует
Я обновился до 29 версии и теперь наблюдаю неприятные вещи.
Раньше, если была ошибка в коде кнопки, в консоли можно было увидеть, в какой именно кнопке, и можно было кликнуть и именно эта кнопка открывалась в редакторе. И даже строка с ошибкой уже подсвечена.А сейчас, в какой бы кнопке какая бы ни была ошибка, в консоли всегда ссылка на некий файл размером 55 байт. id кнопки правда в ссылке видно
http://i6.pixs.ru/storage/7/8/2/2014052 … 188782.pngа в файле одна строчка
Это как?
Версия Custom Buttons? Пример кода с ошибкой?
Например, у меня для вот такого в инициализации
setTimeout(function() { somethingWrongNotDirectlyInCode(); }, 0); this.setAttribute("onclick", "somethingWrongInAttribute();"); somethingWrong();
с Custom Buttons 0.0.5.7 не определяет место с ошибкой только при использовании атрибута строкой.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Если это критично, можно использовать document.createProcessingInstruction() или nsIDOMWindowUtils.loadSheet() (и уже без проверок на reason в деструкторе).
например так c nsIDOMWindowUtils.loadSheet():
setTimeout(function() { let cssStr = ('@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");\n' + '@-moz-document url("' + document.documentURI + '") {\n' + ' %button% menu.bookmark-item[label="Имя папки"] {\n' + ' list-style-image: url("' + self.image + '") !important;\n' + ' -moz-image-region: auto !important;\n' + ' }\n' + '}\n') .replace(/%button%/g, '#' + self.id); let getDOMWindowUtils = function(window) { return window.QueryInterface(Ci.nsIInterfaceRequestor). getInterface(Ci.nsIDOMWindowUtils); }; let cssURI = Services.io.newURI('data:text/css,' + encodeURIComponent(cssStr), null, null); let SHEET_TYPE = { 'agent': 'AGENT_SHEET', 'user': 'USER_SHEET', 'author': 'AUTHOR_SHEET' }; let cssType = SHEET_TYPE['author']; let winUtils = getDOMWindowUtils(window); try { winUtils.loadSheet(cssURI, winUtils[cssType]); } catch (ex) {}; addDestructor(function(reason) { try { winUtils.removeSheet(cssURI, winUtils[cssType]); } catch (ex) {}; }); }, 50);
А как с моим вопросом https://forum.mozilla-russia.org/viewto … 09#p652409 ?
Включить старую Консоль ошибок: devtools.errorconsole.enabled = true
Отредактировано 2k1dmg (21-05-2014 15:28:28)
Отсутствует
Включить старую Консоль ошибок: devtools.errorconsole.enabled = true
Ммм... действительно. Я как-то эту бестолковую поделку так и не начал использовать, а Console² пока что работает.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Вот так, вроде, работает с консолью браузера.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Uxapb
Захерачил такой костыль, коль кнопка не лечится.
.tabs-closebutton { list-style-image: url("chrome://global/skin/icons/Close.gif")!important; }
Отредактировано villa7 (21-05-2014 18:51:45)
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Вот так, вроде, работает с консолью браузера.
Спасибо! Я новую версию СВ поставил, но решил Console² поставить тоже. Родная Консоль ошибок, даже старая, не айс.
Что в Console² делает кнопка Resource (Z)?
Отсутствует