bunda1 пишетПопробуй:
Да также, открывается меню закладок.
Ну тогда я не понял вопроса
Добавлено 24-06-2013 22:18:10
Может попробуй прописать абсолютный путь до нужной папки......
["Chrome", "UChrm", "chrome://global/skin/icons/folder-item.png", "0, 32px, 16px, 16px"]
на
Отредактировано bunda1 (24-06-2013 22:18:30)
Отсутствует
Как узнать что текущая страница полностью загрузилась после перехода по результатам поиска в гугле, ну когда переключаешь: 1 2 3 4 5 6 7 8 9 10 Следующая
Можно отследить такие переходы если использовать hashchange/popstate но есть проблема hashchange и popstate срабатывает раньше чем загрузилась или полностью показалась страница.
Отредактировано bunda1 (25-06-2013 22:23:30)
Отсутствует
Приветствую всех и хотя вопрос адресован к Infocatcher, может кто то ответит.
1. Обновился.
2. Отвалились/перестали работать кнопки которые использовали список тегов BBCode.
3. Анализ через консоль не помог - много ошибок.
4. Видимо отключили-переименовали функцию/класс.
Вот код базовых кнопок... надеюсь на помощь.
/*Initialization Code*/ var menu = <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:cb="http://xsms.nm.ru/custombuttons/" onclick="this. parentNode. handleClick (event);"> <menuitem label="SPOILER" class="menuitem-iconic" image="data:image/png;base64,iVBO..." cb:open="[spoiler]" cb:close="[/spoiler]"/> ........... <menuitem label="HIDE" class="menuitem-iconic" image="data:image/png;base64,iVBO..." cb:open="[hide]" cb:close="[/hide]"/> </menupopup>; this. appendChild (custombuttonsUtils. makeXML (menu)); this. type = "menu"; this. orient = "horizontal"; this.handleClick = function(event) { var menuitem = event. target; var open = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "open"); var close = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "close"); if(event.button == 0) { // Действие при клике ЛКМ this. open = false; lbMouse(open,close); } else if(event.button == 1) { // Действие при клике СКМ this. open = false; mbMouse (open,close); } else if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Действие при клике ПКМ без модификаторов this. open = false; var cm = fnHLD_Get_ListClipboardPrim (), cs = cm.reverse(); if (cs.length==0) cs.unshift("Буфер обмена пуст!"); var selected = {}; var x = custombuttons. selectBox ("Текст из буфера обмена", "Выберите ТЕКСТ:", cs, selected); if (x [0]) rbMouse (open,close,cs [x [1]. value]); } }; this.oncontextmenu = function(event) { if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Блокируем контекстное меню при клике ПКМ без модификаторов this. open = false; event.preventDefault(); event.stopPropagation(); } }; function lbMouse (open,close){ var theBox = document.commandDispatcher.focusedElement; var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var oPosition = theBox.scrollTop; var oHeight = theBox.scrollHeight; var text=theBox.value.substring(0,startPos); text +=open+theBox.value.substring(startPos, endPos)+close; text +=theBox.value.substring(endPos, theBox.value.length); theBox.value = text; var nHeight = theBox.scrollHeight - oHeight; theBox.scrollTop = oPosition + nHeight; }; function mbMouse (open,close) {}; function rbMouse (open,close,paste){ if (paste.length == 0) { open +=close; } else { open +=paste+close; } var theBox = document.commandDispatcher.focusedElement; var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selectionLen = endPos - startPos var oPosition = theBox.scrollTop; var oHeight = theBox.scrollHeight; var text=theBox.value.substring(0,startPos); var nHeight = theBox.scrollHeight - oHeight; text +=open; text +=theBox.value.substring(endPos, theBox.value.length); theBox.value = text; theBox.selectionStart = endPos + open.length; theBox.selectionEnd = endPos + open.length - selectionLen; theBox.scrollTop = oPosition + nHeight; }; /*this. handleClick = function (event) { var menuitem = event. target; var url = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "url"); var numItem = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "numItem"); if (event. button == 0) alert(numItem); else if (event. button == 1) gBrowser. addTab (url); this. open = false; }; */
/*Initialization Code*/ var menu = <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:cb="http://xsms.nm.ru/custombuttons/" onclick="this. parentNode. handleClick (event);"> <menuitem label="=1" class="menuitem-iconic" image="data:image/png;base64,iVBO..." cb:open="[size=1]" cb:close="[/size]"/> ............. <menuitem label="=14" class="menuitem-iconic" image="data:image/png;base64,iVBO..." cb:open="[size=14]" cb:close="[/size]"/> </menupopup>; this. appendChild (custombuttonsUtils. makeXML (menu)); this. type = "menu"; this. orient = "horizontal"; this.handleClick = function(event) { var menuitem = event. target; var open = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "open"); var close = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "close"); if(event.button == 0) { // Действие при клике ЛКМ this. open = false; lbMouse(open,close); } else if(event.button == 1) { // Действие при клике СКМ this. open = false; mbMouse (open,close); } else if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Действие при клике ПКМ без модификаторов this. open = false; var cm = fnHLD_Get_ListClipboardPrim (), cs = cm.reverse(); if (cs.length==0) cs.unshift("Буфер обмена пуст!"); var selected = {}; var x = custombuttons. selectBox ("Текст из буфера обмена", "Выберите ТЕКСТ:", cs, selected); if (x [0]) rbMouse (open,close,cs [x [1]. value]); } }; this.oncontextmenu = function(event) { if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Блокируем контекстное меню при клике ПКМ без модификаторов this. open = false; event.preventDefault(); event.stopPropagation(); } }; function lbMouse (open,close){ var theBox = document.commandDispatcher.focusedElement; var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var oPosition = theBox.scrollTop; var oHeight = theBox.scrollHeight; var text=theBox.value.substring(0,startPos); text +=open+theBox.value.substring(startPos, endPos)+close; text +=theBox.value.substring(endPos, theBox.value.length); theBox.value = text; var nHeight = theBox.scrollHeight - oHeight; theBox.scrollTop = oPosition + nHeight; }; function mbMouse (open,close) {}; function rbMouse (open,close,paste){ if (paste.length == 0) { open +=close; } else { open +=paste+close; } var theBox = document.commandDispatcher.focusedElement; var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selectionLen = endPos - startPos var oPosition = theBox.scrollTop; var oHeight = theBox.scrollHeight; var text=theBox.value.substring(0,startPos); var nHeight = theBox.scrollHeight - oHeight; text +=open; text +=theBox.value.substring(endPos, theBox.value.length); theBox.value = text; theBox.selectionStart = endPos + open.length; theBox.selectionEnd = endPos + open.length - selectionLen; theBox.scrollTop = oPosition + nHeight; }; /*this. handleClick = function (event) { var menuitem = event. target; var url = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "url"); var numItem = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "numItem"); if (event. button == 0) alert(numItem); else if (event. button == 1) gBrowser. addTab (url); this. open = false; }; */
var menu = <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" oncommand="this.parentNode.handleMenuCommand(event)"> <toolbarbutton value="≠"/> ....... <toolbarbutton value="™"/> </menupopup>; menu = custombuttonsUtils. makeXML (menu); this. appendChild (menu); this. value = menu. firstChild. getAttribute ("value"); this. makePNG = function (text, height) { var h = height; var cw = 24, ch = 24; var canvas = <canvas xmlns="http://www.w3.org/1999/xhtml" width={cw} height={ch} style="display:none;"></canvas>; cw -= 2; ch -= 2; canvas = custombuttonsUtils. makeXML (canvas); this. appendChild (canvas); var ctxt = canvas. getContext ("2d"); ctxt. clearRect (0, 0, cw, ch); ctxt. font = h + "pt times bold" var m = ctxt. measureText (text); m = (cw - m. width) / 2.0; h = ch - (ch - h) / 2.0; ctxt. fillText (text, m, h); var uri = canvas. toDataURL ("image/png", ""); this. removeChild (canvas); return uri; }; this. image = this. makePNG (this. value, 16); var mi, val; for (var i = 0; i < menu. childNodes. length; i++) { mi = menu. childNodes [i]; val = mi. getAttribute ("value"); val = this. makePNG (val, 12); mi. setAttribute ("image", val); } this. insertText = function (text) { var command = "cmd_insertText"; var controller = document. commandDispatcher. getControllerForCommand (command); if (controller && controller. isCommandEnabled (command)) { controller = controller. QueryInterface (Components. interfaces. nsICommandController); var params = Components. classes ["@mozilla.org/embedcomp/command-params;1"]. createInstance (Components. interfaces. nsICommandParams); params. setStringValue ("state_data", text); controller. doCommandWithParams (command, params); } }; this. handleMenuCommand = function (event) { event. stopPropagation (); var mi = event. originalTarget; var text = mi. getAttribute ("value"); this. image = this. makePNG (text, 16); this. value = text; this. insertText (text); }; this. type = "menu-button";
/*Initialization Code*/ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Блок инициализации глоб. переменных и функций // срок существования - один сеанс браузера //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // bbBBCodeStat=true // разрешить/включить BBCode window.arycb_BBCodeClipboardStrings = this.clipboardStrings = []; // Массив буфера обмена // //******************************************************** //--------Общие функции для вставки BBCode---------------- //********************************************************* //++++++++++++++++++BEGIN DEF++++++++++++++++++++++++++++++ //-------------------------------------------------------- // Функция lb_BBCodePrim // [bbCode]выделенный[/bbCode] // по умолчанию от ЛКМ) lb_BBCodePrim = function (open,close){ var theBox = document.commandDispatcher.focusedElement; var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var oPosition = theBox.scrollTop; var oHeight = theBox.scrollHeight; var text=theBox.value.substring(0,startPos); text +=open+theBox.value.substring(startPos, endPos)+close; text +=theBox.value.substring(endPos, theBox.value.length); theBox.value = text; var nHeight = theBox.scrollHeight - oHeight; theBox.scrollTop = oPosition + nHeight; }; //--------------------------------------------------------- // Функция mb_BBCodePrim // Резерв // по умолчанию от CКМ mb_BBCodePrim = function (open,close) {}; // ------------------------------------------------------- // Функция rb_BBCodePrim // [bbCode]параметр PASTE по умолчанию из буфер обмена[/bbCode] // по умолчанию от ПКМ rb_BBCodePrim = function (open,close,paste){ if (paste == undefined) { open +=close;} //буфер обмена пуст else { open +=paste+close;} var theBox = document.commandDispatcher.focusedElement; var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selectionLen = endPos - startPos var oPosition = theBox.scrollTop; var oHeight = theBox.scrollHeight; var text=theBox.value.substring(0,startPos); var nHeight = theBox.scrollHeight - oHeight; text +=open; text +=theBox.value.substring(endPos, theBox.value.length); theBox.value = text; theBox.selectionStart = endPos + open.length; theBox.selectionEnd = endPos + open.length - selectionLen; theBox.scrollTop = oPosition + nHeight; }; // ------------------------------------------------------- // Функция fHLD_Get_ListClipboardPrim // получить список сохранёного буфера обмена // fnHLD_Get_ListClipboardPrim = function (){ var cs = arycb_BBCodeClipboardStrings; return (cs.slice(0)); }; //++++++++++++++++++END DEF+++++++++++++++++++++++++++++++++++ //Список сохранёного буфера обмена //Не вызываем это, обработка по таймеру или по событию ЛКМ //-----Обработчики буфера обмена this.MAX_ENTRIES = 16; //Максимальное число записей 16 this.CHECK_INTERVAL = 1000; //Время опроса буфера 1000 миллисекунд this.type = "menu"; this.orient = "horizontal"; this._menupopup = this.appendChild(document.createElement("menupopup")); this._menupopup.setAttribute("oncommand", "this.parentNode.handleCommand(event.target);"); this.checkClipboard = function() { var clipStr = readFromClipboard(); if(clipStr && this.clipboardStrings.indexOf(clipStr) == -1) this.storeString(clipStr); }; this.storeString = function(str) { var cs = this.clipboardStrings; cs.push(str); while(cs.length > this.MAX_ENTRIES) cs.shift(); var mi = document.createElement("menuitem"); mi.setAttribute("label", str); this._menupopup.appendChild(mi); while(this._menupopup.childNodes.length > this.MAX_ENTRIES) this._menupopup.removeChild(this._menupopup.firstChild); }; this.handleCommand = function(mi) { var indx = Array.indexOf(mi.parentNode.childNodes, mi); if(indx != -1) this.insertText(this.clipboardStrings[indx]); }; this.insertText = function(str) { var cmd = "cmd_insertText"; var controller = document.commandDispatcher.getControllerForCommand(cmd); if(controller && controller.isCommandEnabled(cmd)) { controller = controller.QueryInterface(Components.interfaces.nsICommandController); var params = Components.classes["@mozilla.org/embedcomp/command-params;1"] .createInstance(Components.interfaces.nsICommandParams); params.setStringValue("state_data", str); controller.doCommandWithParams(cmd, params); } }; setInterval(function(button) { button.checkClipboard(); }, this.CHECK_INTERVAL, this); this.setAttribute("onpopupshowing", "this.checkClipboard();");
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Отсутствует
хмм а если поковырять сам гугловский скрипт и брать событие окончания подгрузки данных оттуда?
там же наверняка обычный xmlHTTPRequest которым подгружаются данные и вставляются в DOM страницы
посмотреть как он это делает и по какой переменной можно отслеживать завершение действия..
Сложно для меня.
Отсутствует
там же наверняка обычный xmlHTTPRequest которым подгружаются данные и вставляются в DOM страницы
посмотреть как он это делает
Обычно отслеживают через document.addEventListener("DOMNodeInserted"...
Отсутствует
Да, кстати про BBCode. Я некогда переносил оперную кнопку url, т.к. привык к её логике (ссылка, при наличии, берётся из буфера обмена). М.б. кому-нибудь ещё пригодится:
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%3EBBCode%20url%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAkBJREFUeJydku1Lk1EYxp8/p28F9a36EGESUguliHBIyOYLKM7yZQ3LNF8oZaZirdwsl6JO02nLdG463WaaL1tZGmhqWGYzBCFwzxa/tkccbYw+eODicO7rvq/7Ovc5AiDEovzFD66Ur5KkWYmguPk71tldYnOjDrpXPuT1Izx06yifTiXPmcLAdiFqlwydbYHC5k1yG9eJK1DTtYlC30bXtwLqF+XkuvPJGEvlpjMBo6eT91+DOBaDFLdskVW3SpRAt2Mb+SMDz1cz6d5USfvdGRmTYiX51lQsSy7m1/YFqu0dZBv1ESeSQFJxyJ4tnZYvSjo2cjD7Chja0WDbvY3WXcvHjT9MLQexfghwZ/iJ5PBiRe++gGVym8tVU6jd58kaOUXrWibG9Wxy7IkUTlxAM5orFY9+CtA/F6DNJZLRW8K1RgsVxjUEbdc6yoZlZN1HSDGdpmkpjSJXIs+mnZTZayRn4c4D8wE634roHSLaN34K2n9z6ZYHQXl/AZXBR5nFQ5M9NAtzAhnWk5hnA/TM/OKp08vLdwHa3SKGUHHDsJ/rphIUg2c5nu5CSK/ykqX7SWX/HnVDfsoGxyU3D2wTkl2jU6RlXERn90t8Ud84eWNnqPVe5WiaA6G69TPJ91bQmPYo7fORbDoRmowQhXBhbOzGawXJ6imEntENzqk90p0OyNj1n9j+Mx6TD6Hq3IkkxnaLh0heeG82L5NUOhdFxOscj498ZZV25vAODlDyeP5wM/gXTs9WvG5CvFgYfwFzo6tZMWWyMgAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Avar%20win%20%3D%20document.commandDispatcher.focusedWindow.top%20%3D%3D%20content%20%3F%20document.commandDispatcher.focusedWindow%20%3A%20content%2C%20doc%20%3D%20win.document%3B%0A%0Avar%20re%20%3D%20/%28%3F%3A%28%3F%3Ahttps%3F%7Cftp%7Cmms%7Crtsp%29%3A%5C/%5C/%7C%28%3F%3Aopera%7Cabout%29%3A%5C/%3F%29%5B%5E%5Cs%3C%3E%5C%5B%5C%5D%5Cx22%5D+/i%3B%0Avar%20txt%20%3D%20ujs_bbcode_tag%28%29%20%7C%7C%20%27%27%3B%0Avar%20url%20%3D%20%28txt.match%28/%5E%5C%5Burl%3D%28.+%3F%29%5C%5D/%29%20%7C%7C%20%5B%5D%29%5B1%5D%20%7C%7C%20txt.replace%28/%5C%5B%5B%5E%5C/%5D.*%3F%5C%5D.*%3F%5C%5B%5C/.+%3F%5C%5D/g%2C%20%27%27%29.match%28re%29%20%7C%7C%20win.getSelection%28%29.toString%28%29.match%28re%29%20%7C%7C%20gClipboard.read%28%29.match%28re%29%20%7C%7C%20%27%27%3B%0Aujs_bbcode_tag%28%27%5Burl%3D%27%20+%20url%20+%20%27%5D%27%29%3B%0A%0Afunction%20ujs_bbcode_tag%28tag%29%7B%0A%09var%20ts%3Dwin.getSelection%28%29.toString%28%29%3B%0A%09var%20et%3Ddoc.activeElement%3B%0A%09var%20en%3Det%20%26%26%20et.nodeName.toLowerCase%28%29%3B%0A%09var%20ta%3D%28en%3D%3D%27textarea%27%20%7C%7C%20%28en%3D%3D%27input%27%20%26%26%20et.type%3D%3D%27text%27%29%29%20%3F%20et%20%3A%20null%3B%3B%0A%09if%28%21ta%29for%28var%20t%3Ddoc.getElementsByTagName%28%27textarea%27%29%2C%20i%3Dt.length%3B%20i--%3B%29%7Bta%3Dt%5Bi%5D%3B%20if%28ta.rows%3E4%20%26%26%20ta.offsetHeight%3E0%29break%7D%3B%0A%09if%28%21ta%20%7C%7C%20ta.offsetHeight%3D%3D0%29return%3B%0A%0A%09var%20s%2C%20e_tag%3B%0A%09var%20s_tag%3Dtag%3B%0A%09var%20nStart%3Dta.selectionStart%3B%0A%09var%20nEnd%3Dta.selectionEnd%3B%0A%09var%20txt%3Dta.value.substring%28nStart%2C%20nEnd%29%3B%0A%09var%20s_txt%3Dta.value.substring%280%2C%20nStart%29%3B%0A%09var%20e_txt%3Dta.value.substring%28nEnd%2C%20ta.value.length%29%3B%0A%0A%09var%20al%3Darguments.length%3B%0A%09if%28al%3D%3D0%29return%20ts%20%7C%7C%20txt%3B%0A%09if%28al%3D%3D1%20%26%26%20typeof%20arguments%5B0%5D%3D%3D%27function%27%29%7B%0A%09%09var%20sel%3D%7Btext%3A%20txt%2C%20start%3A%200%2C%20end%3A%20nEnd-nStart%7D%3B%0A%09%09arguments%5B0%5D%28sel%29%3B%0A%09%09ta.value%3Ds_txt+sel.text+e_txt%3B%0A%09%09var%20len%3Dta.value.length-s_txt.length-e_txt.length+1%3B%0A%09%09ta.setSelectionRange%28nStart+sel.start+%28sel.start%3C0%20%3F%20len%20%3A%200%29%2C%20nStart+sel.end+%28sel.end%3C0%20%3F%20len%20%3A%200%29%29%3B%0A%09%09ta.focus%28%29%3B%0A%09%09return%3B%0A%09%7D%3B%0A%09if%28al%3D%3D2%20%26%26%20arguments%5B1%5D%21%3D%27%27%29%7B%0A%09%09e_tag%3Darguments%5B1%5D%3B%0A%09%7D%0A%09else%7B%0A%09%09e_tag%3Dtag.replace%28/%28%5E.%29%28%5B%5E%3D%20%5D*%29%28.*%29%28.%24%29/%2C%20%27%241/%242%244%27%29%3B%0A%09%7D%3B%0A%0A%09var%20stl%3Ds_tag.length%3B%0A%09var%20etl%3De_tag.length%3B%0A%09var%20lt%3Dstl+etl%3B%0A%0A%09if%28txt.indexOf%28s_tag%29%3D%3D0%20%26%26%20txt.lastIndexOf%28e_tag%29%3D%3D%28txt.length-etl%29%29%7B%0A%09%09s%3Ds_txt+txt.slice%28stl%2C%20-etl%29+e_txt%3B%0A%09%09nEnd-%3Dlt%3B%0A%09%7D%0A%09else%7B%0A%09%09if%28nStart%3D%3DnEnd%20%26%26%20s_txt.lastIndexOf%28s_tag%29%3D%3Ds_txt.length-stl%20%26%26%20e_txt.indexOf%28e_tag%29%3D%3D0%29%7B%0A%09%09%09s%3Ds_txt.slice%280%2C%20-stl%29+e_txt.slice%28etl%29%3B%0A%09%09%09nStart-%3Dstl%3B%0A%09%09%09nEnd%3DnStart%3B%0A%09%09%7D%0A%09%09else%7B%0A%09%09%09if%28ts%20%26%26%20ta%21%3Det%29%7B%0A%09%09%09%09s%3Ds_txt+txt+s_tag+ts+e_tag+e_txt%3B%0A%09%09%09%09nStart%3DnEnd%3B%0A%09%09%09%09nEnd+%3Dts.length%3B%0A%09%09%09%09txt%3Dts%3B%0A%09%09%09%7D%0A%09%09%09else%7B%0A%09%09%09%09s%3Ds_txt+s_tag+txt+e_tag+e_txt%3B%0A%09%09%09%7D%3B%0A%0A%09%09%09if%28txt.length%3D%3D0%20%26%26%20s_tag%21%3D%27%27%29%7B%0A%09%09%09%09nStart+%3Dstl%3B%0A%09%09%09%09nEnd%3DnStart%3B%0A%09%09%09%7D%0A%09%09%09else%7B%0A%09%09%09%09if%28s_tag.slice%28-4%2C%20-1%29%3D%3D%27%3D%22%22%27%20%7C%7C%20s_tag.slice%28-2%2C%20-1%29%3D%3D%27%3D%27%20%26%26%20s_tag.slice%28-1%29%21%3D%27%22%27%29%7B%0A%09%09%09%09%09nStart%3DnStart+stl-%28s_tag.slice%28-3%2C%20-1%29%3D%3D%27%22%22%27%20%3F%202%20%3A%201%29%3B%0A%09%09%09%09%09nEnd%3DnStart%3B%0A%09%09%09%09%7D%0A%09%09%09%09else%7B%0A%09%09%09%09%09nEnd+%3Dlt%3B%0A%09%09%09%09%09if%28s_tag%3D%3D%27%27%20%7C%7C%20s_tag.slice%28-1%29%3D%3D%27%22%27%20%7C%7C%20%28al%3D%3D2%20%26%26%20arguments%5B1%5D%3D%3D%27%27%29%29nStart%3DnEnd%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%0A%09ta.value%3Ds%3B%0A%09ta.setSelectionRange%28nStart%2C%20nEnd%29%3B%0A%09ta.focus%28%29%3B%0A%7D%3B%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%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отсутствует
bunda1
Это только для гугля? Если нет, то вероятно самым простым (и дубовым) решением будет пару секунд, после hashchange, проверять изменение размера документа.
Добавлено 26-06-2013 22:41:13
И пример использования DOMNodeInserted. Хотя для определения окончания подгрузки страницы, он и не слишком много даёт.
Отредактировано Lex1 (26-06-2013 22:41:52)
Отсутствует
bunda1
Это только для гугля? Если нет, то вероятно самым простым (и дубовым) решением будет пару секунд, после hashchange, проверять изменение размера документа.
Для всех поисковиков.
А addProgressListener для этого нельзя как то приспособить?
Добавлено 26-06-2013 22:43:36
Хотя для определения окончания подгрузки страницы, он и не слишком много даёт.
Отредактировано bunda1 (26-06-2013 23:02:25)
Отсутствует
bunda1
Ну onStateChange срабатывает вовремя, т.ч. очевидно можно и так.
var progressListener= { QueryInterface: function (aIID) { if (aIID. equals (Components. interfaces. nsIWebProgressListener) || aIID. equals (Components. interfaces. nsISupportsWeakReference) || aIID. equals (Components. interfaces. nsIXULBrowserWindow) || aIID. equals (Components. interfaces. nsISupports)) return this; throw Components. results. NS_NOINTERFACE; }, onLocationChange:function (a,b,c){LOG('onLocationChange')}, onProgressChange:function(a,b,c,d,e,f){LOG('onProgressChange')}, onSecurityChange:function(a,b,c){LOG('onSecurityChange')}, onStateChange:function(a,b,c,d){LOG('onStateChange'); if(c == 65552)LOG(content.document.body.innerHTML)}, onStatusChange:function(a,b,c,d){LOG('onStatusChange')} }; getBrowser().addProgressListener(progressListener);
Отсутствует
Нельзя ли подправить код этих кнопок под фф 20.0.1 ?
Отсутствует
Kiril__777
Сам многие исправлял этим, кнопку АМО тоже.
Отредактировано villa7 (27-06-2013 07:20:44)
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
villa7
а вот эту кнопку у вас получилось сделать рабочей?
Отсутствует
villa7а вот эту кнопку у вас получилось сделать рабочей?
В этой кнопке конвертация не помогла, только просить разработчика.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Kiril__777 пишет:
Подскажите, если я хочу перенести этот пункт из контекстного меню вкладки (tabContextMenu) в меню "Firefox" (appmenuSecondaryPane), то мне нужно одно значение заменить на другое?
Вот пример Добавить новый пункт "Перезапуск" в главном меню(Firefox 3.6 +)
Добавлено 31-03-2013 05:30:44
Или вот так:
Попытался состряпать такой пункт
menuItem.setAttribute("oncommand", function(){window.open('http://www.google.com/search?q=cache:'+location.href)});
дело вот в этой строчке?
Отсутствует
Kiril__777
menuItem.addEventListener("command", function(){content.open('http://www.google.com/search?q=cache:'+content.location.href)}, false);
См. http://forum.mozilla-russia.org/viewtopic.php?id=57411
Отсутствует
Lex1
спасибо за наводку!
Интересует вопрос, если выражение "nextEleMenu" определяет расположение нового пункта меню "перед", то что нужно написать чтобы новый пункт был "после"?
Отсутствует
Indomito
Конвертирование старых кнопок с XML (E4X)
проще переписать скрипт используя такой шаблон
/*Initialization Code*/ var apps = new Array; //----иконки для меню в base64 icon1='data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABwAAAA5AAAARgAAAEEAAAA4AAAAJAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAU8dLhSTS2YrwmGEU9U8hoPMCXCHwAg/SqMCEBNtAAAALQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAGRUeD3dShTXYerNF/3nFov844ff/E9///xLY//8Vz/X/G6jG8RBIVqoAAABAAAAABQAAAAAAAAAAAAAAChsoEndjpzvzY6sr/3q7nf835f//Etz//xDZ//8P1vz/EdL3/yDJ7f8jwOP/D2d7wwECAjUAAAAAAAAAAAcNBD5enDjpUq4e/0CPFf91n5z/ZeP5/zbm//8h3f//Edn//w/X/f8U0PX/H8Hl/yC94f8NUWGhAAAADQAAAAY5WSWYYLYw/0CiHv9LskP/V6BZ/3iUkf973O7/XfD//zjl//8O2f//Ddf9/xLP9P8iweT/HKbF8wMSFTwOFAooZJxD11CuLf9MsEX/Vr1t/23Tm/+Zyqn/fYGB/4ajr/+Qzdv/bOv//xLb//8O1fr/Fsjt/yK94f8LS1l5KDYeTWyxTO5Lrz7/Vrxq/2jOmP+m2bz/ZHpc/01JMP9aQCD/TD8y/3iQmv9e5fz/Ctf+/xLQ9f8hxOn/GXOIoSk7IFNntVL0ULdX/13GiP+S4L7/epN2/2VWJP/Hghv/340n/7l7Iv9TRzT/ZbLI/yTi//8J1f3/H9H2/x17kak1Qi86d8Bv6la+bv9q0KH/ot69/2JuTf+8fiz/759M//K6g//yo1L/mXs+/1ubp/887///I9Tt/0Covf8fc4mRHyocC3u6fMpiyYn/c9Sq/6Tfwf9wcWH/wYg4//WtYv/2yJH/96te/7KNTP9ff5P/Voel/0NQkf9KWbL/Hl9xUwAAAABTelpzgd6q/5Hfu/+ZwKn/hYS//3RjY//Hk1//0o9Z/7J5Of+WhI3/UE/U/w8I3f8JA+7/P2Dz3RQnJhEAAAAAFyEaDKTiw8244sL/jY+5/zQy9/9kZdT/a2me/2dilf9naK//YmPt/xEQ8/8AAOr/EhL0/ytPj1IAAAAAAAAAAAAAAAA5SUMqpcip2nJ0sP8WFeb/AwPh/yor5f81NuX/ISHk/wAA2f8AANb/CAje/w0Nj3kAAAAAAAAAAAAAAAAAAAAAAAAAAB8kHRZAQ4OKXFzf7iUlzP8TE8v/EhLK/xoay/8tLc/+NTXD0h8fe1YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADY2cD98fOOadnbc03d33Nh/f+TAa2u9bx4eNBcAAAAAAAAAAAAAAAAAAAAA+A8AAOAHAADAAwAAgAEAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAEAAMADAADgBwAA+A8AAA=='; icon2='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjA4ZXKc4QAAAgtJREFUOE+NU99LU2EYnvSHdNP0uHUcw7n8RTmNgYKgWESXQexGNAoSIsoiutDhUDbndEmLWo1ayEydgV1FXWi1HINipC1rP9x2cptnJoo8nu+Dc9xxg3XggcP3ve/zvu/zPl8FAMX/fuaVGA0+keMUN9rYCppHCMphZCmI4eWoEHYUS85o8VLJ5FJE15s1dAR2ce62j0KML0kgJplCMRAYV3eg9Weh8nLQvN6C3p2QSIoICtu0hLNo9P2C8r4fpyyfwbiiqHr0B6wriQb3pqwTaYSxLynanuFjHo0zETBd/dC0XsaZi9dRfXMB1Y4YTk/EUf8sW0xQmEwImAeLULb3SvMSAv1wAKw9AZ3zL4Woh0zE1g95sN40Kh8LLdvXwdgiUFkjUFt/g7XGoR3fRMNUBoYnXDHB2SUe7CsOldNRqAe/loWsA5N/A3VzPFSuBJTjGzhpegpd97WykHzQPL+DWu82agSVVfYoGHMY6ksPZcYhOjR5ePQFD3DH//1ohCuC4uzkGq2mf56D1plCjTCvZjRONyBuweDj0Rvah/UbL99C52waLbde0mqUxCGsypmBfkIwztQWml/k0P3uHwZCexhaTtJkEic6UmGc4SQCkaT27ns02dZh9CTRM5fB1dmf9F/UpdD+ih73D9TfeysxXnCsSlWOC1nq3VAfnLcFoBv6BJJc7mUevz8EdJ2boXU7oPQAAAAASUVORK5CYII='; // -------------конец иконок----------- // ------ пункты меню в формате название,иконка,адрес separator это разделитель ------ apps.push(['название пункта меню1',icon1,'http://адрес_сайта1/']); apps.push(['название пункта меню2',icon2,'http://адрес_сайта2/']); apps.push('separator'); apps.push(['название пункта меню1',icon1,'http://адрес_сайта1/']); apps.push(['название пункта меню2',icon2,'http://адрес_сайта2/']); // -------------конец меню----------- var nMItem = function(label,img,path,args,obj) { var m = document.createElement('menuitem'); m.setAttribute('path',path); m.setAttribute('label',label); m.f = obj.startProcess.bind(obj); m.setAttribute('oncommand','event.stopPropagation();this.f("'+path+'","'+args+'",this)'); m.setAttribute('class','menuitem-iconic'); if (!img) img = Default; m.setAttribute('image',img); m.tooltipText = label; return m; } this.startProcess = function(path,args,mi) { this.currentCommand=mi; this.image=mi.getAttribute("image"); getBrowser (). selectedTab = getBrowser (). addTab (path) } var mP = document.createElement('menupopup'); for (var i=0; i<apps.length; i++) { if (apps[i] == 'separator') { mP.appendChild(document.createElement('menuseparator')); } else { if (!apps[i] [3]) apps[i] [3]=''; mP.appendChild(nMItem(apps[i] [0], apps[i] [1], apps[i] [2], apps[i] [3], this)); } } this.appendChild(mP); this.type = "menu"; this.orient = "horizontal"; this.image=mP.firstChild.getAttribute ("image"); this.currentCommand=mP.firstChild; mP. firstChild. setAttribute ("oncommand", 'event.stopPropagation();this.f(this.getAttribute("path"),getBrowser().contentDocument.location.href,this);'); mP. firstChild. nextSibling. setAttribute ("oncommand", 'event.stopPropagation();this.f(this.getAttribute("path"),getBrowser().contentDocument.location.href,this);'); //-------------- если нужно чтоб меню появлялось при нажатии мыши на кнопку закомментируйте или удалите код ниже /* this. onmouseover = function (event) { this. open = true; }; */
// ------ пункты меню в формате название,иконка,адрес separator это разделитель ------ apps.push(['название пункта меню1',icon1,'http://адрес_сайта1/']); apps.push(['название пункта меню2',icon2,'http://адрес_сайта2/']); apps.push('separator'); apps.push(['название пункта меню1',icon1,'http://адрес_сайта1/']); apps.push(['название пункта меню2',icon2,'http://адрес_сайта2/']); // -------------конец меню-----------
Переделать в условный код т.е. ветвление, как у меня реализовано например COMBO... "в лоб" как то не красиво, хотя это дело техники.
IMHO
Отредактировано Indomito (27-06-2013 13:12:25)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Kiril__777
Тогда придётся вставлять перед следующим элементом, т.е.
Отсутствует
Добавлено 27-06-2013 21:19:47
bunda1
Ну onStateChange срабатывает вовремя, т.ч. очевидно можно и так.
Большое спасибо
Добавлено 27-06-2013 21:34:50
проще переписать скрипт используя такой шаблон
А если такой шаблон:
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%3EBB%3A%20Color%20Menu2%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhFwAWALMAAAAAAISEhNbWzv///////////////////////////////////////////////////ywAAAAAFwAWAAAETXDISasdYYjNu//ZJ47haHLlaaaqyApALMek5skbDtqdrnsvGE0IcPE4sx/wmBsqUUxis7j7+IbLWxKbbdW8X3BV3CVDzZ2Aes1uu9cRADs%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20..........................................................................%20%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%7D%3B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20%20....................%20%20%20%20%20%20%0Avar%20array%20%3D%20%5B%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20label%3A%20%22Black%22%2C%0A%20%20%20%20%20%20%20value%3A%20%22%5Bcolor%3D%23000000%5D%2C%5B/color%5D%22%2C%0A%20%20%20%20%20%20%20image%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAAjSURBVChTY2RgYPgPxCQDkCZSMckawC4j1ZZRTUiBNuxCDwDYNZxl4jAoIwAAAABJRU5ErkJggg%3D%3D%22%0A%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20label%3A%20%22Gray%22%2C%0A%20%20%20%20%20%20%20value%3A%20%22%5Bcolor%3D%23555555%5D%2C%5B/color%5D%22%2C%0A%20%20%20%20%20%20%20image%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABGdBTUEAALGPC/xhBQAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAAjSURBVChTY2xoaPjPQCoAaSIVM5CqAeyyUU2QkB4NCGiSAwARDYf0VrC2pAAAAABJRU5ErkJggg%3D%3D%22%0A%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20label%3A%20%22D-Blue%22%2C%0A%20%20%20%20%20%20%20value%3A%20%22%5Bcolor%3D%23000066%5D%2C%5B/color%5D%22%2C%0A%20%20%20%20%20%20%20image%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABGdBTUEAALGPC/xhBQAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAAiSURBVChTY2RgaPjPQDoAaSIVk6wB7DJSbRnVhBQ1wy/0APHz6uW3kCqQAAAAAElFTkSuQmCC%22%0A%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20label%3A%20%22%u041A%u0430%u0440%u0442%u0438%u043D%u043A%u0430%22%2C%0A%20%20%20%20%20%20%20value%3A%20%22%5Bimg%5D%2C%5B/img%5D%22%2C%0A%20%20%20%20%20%20%20image%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsSAAALEgHS3X78AAADK0lEQVQ4T6WT30+TVxjHX2aybJe72MUiuJi4nyH7E8y82N00/hrodMnsXLIlxuyHFHTeuA0xE+IPshnnFpeh2ZiLRgpIC1XU4SrIoGKhBGpbQehSitD2fdvS0/ez5y1dIk12gTvJJ0/O+zzP93zPe84pKV+7PfPqmrIVz6wo0UBb9iiRDkqe0qZm5tC22qqVYYJvzsT3SC2bu7OKGQVtnX+Y2o4Pq9V4wqTKk6TGk+BAEftl/i/FOWv+WU+cX8JwxRLbvrtaBeM5avsT1PXHOVJE7Z04X/fFsWJxzpp/2TvP5Ulx5ropYh/YVThpcsyrc8Kb5ORjHBtM0jSq0xFOc86v0zCQ4Lg3saSm/q8EHdMFsW0iNqGbfHdP57Qvmed7n86pe0nODOsMxxTxNEwnoXsyw9kRnTOSt3IWjUNJrkULYpUi9nfKpD2cwSkOLowbNI8ZXAyk6Jla4GEcHIERmkf7mJZ/eyeSpclvcG7UyMeW+ymkjFZrm1t22ZUhpxGaNwnOKcZms4zEstyXk43q8PnNn3i2cS1PN67DFRrLO2wLpvhNFr0s0S+1BtDiLBILiVh4fpEHIj4RN3mjyYZ28BW0w+WcHrrGbAp6IxnaQmluRxbyBsT8UrFgwZmVtAjN5UQMfvcPsKvhU3ZeqsMTiRIRZ0G5k9a/DIh7iyViqcI2w/MwKZmHicVoEZU9tLd2MTYxQzixIM1pcQ5TUmPVWQuKWRyL26xSmdziaQUepeifHqIreJELw0c4O7iHU/3vUud6k/obb3Gidz0nezfwbV8lPw58RLPvK9rHz/PACNDq7DG1CtsXajYd41dpPurZwMHucqq6yoRS9nWtlLiSmu7VVF99Ebt7FVXux3Ol7HU+x/nR3XJpPdZzqlUjsW72uJ7nk85V7HO/LE2vFXgd+9X/wC3fpW6vs4yf/ZbYn6b2nogNRq+zsaWUdxxrqHC8tCzevvQC33httHfmxQ4pb+wumzsqqXDuoNK5c1msb9vCUV+DiN0ytU3v21UOk5TKPhGGWkBJf/7SbrbVyMX4/8N1/baprdv0cdYh78qixXnjibjivmUeqv8h9w+M0lQoOfmVdgAAAABJRU5ErkJggg%3D%3D%22%0A%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20label%3A%20%22Code%22%2C%0A%20%20%20%20%20%20%20value%3A%20%22%5Bcode%5D%2C%5B/code%5D%22%2C%0A%20%20%20%20%20%20%20image%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAA60lEQVR42mL8//8/AyUAIICYGCgEAAFEsQEAAYQNKQHxfyieABWrRRJTQlYMEEBYNc9YtR2MoRoYsIjBDQEIIKyavTOb0RWC5ZJrJ2PIAQQQTs2g2EHH2AwBCCCQIIeNkweGzTgMwHAJQACBBLkUdC3BArqOgSDBSAaIE7AZADdk6dYD/+W0Tf8DBBAoGhk5GX+AZbx8A0DUMjwhDRK/C9TMsGzLYYZHV08zAAQQiqkgV5T3LcQV0nCbkb0KEEAYCnAYglMzQABhjUo0QxjwaQYIIEIpMQcqNgFXSgQIIEZKcyNAAFGcmQACDAB0jLqYK4uYbwAAAABJRU5ErkJggg%3D%3D%22%0A%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20label%3A%20%22Spoiler%22%2C%0A%20%20%20%20%20%20%20value%3A%20%22%5Bspoiler%5D%2C%5B/spoiler%5D%22%2C%0A%20%20%20%20%20%20%20image%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMklEQVQ4jWNgGKzgP7EKmSi1iWIDGJHY+JzNiEcOKxhCYTDwgNjQxRaojAwMwyIMKAYA3esECwxQ4k8AAAAASUVORK5CYII%3D%22%0A%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20label%3A%20%22%u0426%u0438%u0442%u0430%u0442%u0430%22%2C%0A%20%20%20%20%20%20%20value%3A%20%22%5Bquote%5D%2C%5B/quote%5D%22%2C%0A%20%20%20%20%20%20%20image%3A%20%22data%3Aimage/gif%3Bbase64%2CR0lGODlhFwAZANUeAPPz+NLS0qampqqqqrKytm5ubmZmZpaWmt7e3r6+voaGhmJiYlJSUoqKivHx9+Li4tra2tbW1ra2tkpKSoKCgu/v9crKyqKiopCw/4ap+IOn93p6euno8u7u9Pr9/tLOysbGxnZ2dq/H/qbA+J6ennJycpKSko6Ojubl77q6uuTj7eLi7Zqamh9AitTg+K/A4t/f6Ojx/d3d54mr+3if8GeS5VZ/xUVomTNRbihGctnY5NfW4tzc5tTT4AAAAAAAACwAAAAAFwAZAAAG3ECAcEgsGo/IpHLJbDqfyoBgACUSCoZDFYBIKBaMxtBBLpvLD0hEsphQypW4fB5/IBCWi6FAl2P+fxkaaXgCBRt0HB2KGB6Ojh8WESB6IYqXixyajSIiIxcCCQkkCyWap6ibjx4TJSYnpamnKLQonCIpE60MIbW+tCrBK42OLLolEi3BKivMzivQwx4jIwoCIy4vLdHc0DAr38QxLuTZ29/o4OAyMDIzNDU2Nzg5Lfbs+O3tMvz9/v8AAwocKEOHwYMIEyrcwWOHw4cQI0qcSJFijx09MmrcyLFjxiAAOw%3D%3D%22%0A%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20label%3A%20%22%u041F%u043E%u0434%u0447%u0435%u0440%u043A%u043D%u0443%u0442%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%22%2C%0A%20%20%20%20%20%20%20value%3A%20%22%5Bu%5D%2C%5B/u%5D%22%2C%0A%20%20%20%20%20%20%20image%3A%20%22data%3Aimage/gif%3Bbase64%2CR0lGODlhFwAWALMAAAAAAISEhNbWzv///////////////////////////////////////////////////ywAAAAAFwAWAAAEVHDISasdYYjNu//ZJ47haHLlaaaqyG5ADAjy7L2wTesdvnMxl+YTzAlFxR9o6Ekme8yOk4eKAgEBQeBZHdWo3RbJuvtytWTxxqdmi92tgHxOr9vnEQA7%22%0A%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20label%3A%20%22%u041A%u0443%u0440%u0441%u0438%u0432%22%2C%0A%20%20%20%20%20%20%20value%3A%20%22%5Bi%5D%2C%5B/i%5D%22%2C%0A%20%20%20%20%20%20%20image%3A%20%22data%3Aimage/gif%3Bbase64%2CR0lGODlhFwAWALMAAAAAAISEhNbWzv///////////////////////////////////////////////////ywAAAAAFwAWAAAERnDISasdYYjNu//ZJ47haHLlaaaqyH5AHIPaGQduTc65DeC9HWClg/2IwtOLc1MWNzIZskV6UlHWq2Cp5V691IB4TC6bxxEAOw%3D%3D%22%0A%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20label%3A%20%22%u0416%u0438%u0440%u043D%u044B%u0439%22%2C%0A%20%20%20%20%20%20%20value%3A%20%22%5Bb%5D%2C%5B/b%5D%22%2C%0A%20%20%20%20%20%20%20image%3A%20%22data%3Aimage/gif%3Bbase64%2CR0lGODlhFwAWALMAAAAAAISEhNbWzv///////////////////////////////////////////////////ywAAAAAFwAWAAAETXDISasdYYjNu//ZJ47haHLlaaaqyApALMek5skbDtqdrnsvGE0IcPE4sx/wmBsqUUxis7j7+IbLWxKbbdW8X3BV3CVDzZ2Aes1uu9cRADs%3D%22%0A%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20label%3A%20%22CUT%3D%u041F%u043E%u043B%u043D%u0430%u044F%20%u043D%u043E%u0432%u043E%u0441%u0442%u044C%22%2C%0A%20%20%20%20%20%20%20value%3A%20%22%5BCUT%3D%u041F%u043E%u043B%u043D%u0430%u044F%20%u043D%u043E%u0432%u043E%u0441%u0442%u044C%5D%2C%5B/CUT%5D%22%2C%0A%20%20%20%20%20%20%20image%3A%20%22data%3Aimage/gif%3Bbase64%2CR0lGODlhFQAUAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAAYG+P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANkALAAAAAAVABQAAAhhALMJHEiwoMGDCBMqTHitocOHEB9mu7YQYcOKBy9mw8ZRILaBHzmKnEjxo8eNIFMKvGhSJcqTK0sWbElzIMuUNWGS9NiRZ8uXOzEW1CjUJsmIGpFWpEixqM2mTldGnSo0IAA7%22%0A%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20label%3A%20%22Center%22%2C%0A%20%20%20%20%20%20%20value%3A%20%22%5Bc%5D%2C%5B/c%5D%22%2C%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20image%3A%20%22data%3Aimage/x-icon%3Bbase64%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ERBwAAEfkR+RP5E/kRAAcA+fn5AAAHEQcHAAAAAAAAABERBwAR+RMAAAAA+RMABwD5+fkABwcREREAAAAAAAAAAAcHABMA+RMRERMAAAAHAPn5APcHEQAAAAAAAAAAAAAAAAATABMREREREfX1EwAHAAD39/cAAAAAAAAAAAAAAAAAAAAT9fUTABMAE/X1EwAA+ff3APkAAAAAAAAAAAAAAAAAE/X1ERMAEwAT9fX1EwAA+QD5+QAAAAAAAAAAAAAA9fUREREREwAAABMRERH1EwcA+fn5AAAAAAAAAAAAAAD1ERP5+QAREwATEQD5+RMRBwD5+fkAAAAAAAAAAAAAABMR+fn5+QARBwcA+ff3+QcHAPn5AAAAAAAAAAAAAAAAABEAAAAAAAcHBwAAAPn3BwD5+fkAAAAAAAAAAAAAAAAAEwAAAAAABwcHAAAAAAAHAPn5+fkAAAAAAAAAAAAAAAATEwAAAPX19fX1AAAAExMAAPn5+QAAAAAAAAAAAAAAExER9fX19fX19RIS9fUTE2cA+fn5AAAAAAAAAAAAAAATExEREREREvX19RISEhJnZwD5+fkAAAAAAAAAAAAAAGcTExMSEhISEvX19fUTZ2dnAPn5+QAAAAAAAAAAAAAAZ/X19RIRERISEvX19fUHB2cA+fkAAAAAAAAAAAAAAABn9fX1EhERERESEvX19QcHZwAA+fkAAAAAAAAAAAAAAAD19fUSERERERESEvX19QcA+WcA+fkAAAAAAAAAAAAAAGf19RIRERERERES9fX1BwBnBwcA+fkAAAAAAAAAABEHAGf1EhIRERERERIS9QcAAAARBwcA+fn5+QAAAAARBwcAAAD1EhISEhISEgcAAAAAAAARBwcAAAD5ABERBwcHAAAAAAAAAAAAAAAAAAAAAAAAAAAR9QcHBwAAEREHBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREfUHAAAAEREHAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEREQAAAAAAEQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOHwH//B4Af/wcAD4wDAAcEAAAGAAAAAgIAAAIHwAAAB+AAAA/wAAB/+AAAf/AAAH/gAAB/4AAAf+AAAP/wAAD/8AAAf/AAAH/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%3D%3D%22%0A%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20label%3A%20%22More%22%2C%0A%20%20%20%20%20%20%20value%3A%20%22%5Bmore%5D%2C%5B/more%5D%22%2C%0A%20%20%20%20%20%20%20image%3A%20%22data%3Aimage/gif%3Bbase64%2CR0lGODlhFQAUALMAAAAAAP////Pz8+bm5tnZ2czMzL+/v7GxsaOjo5SUlIWFhXR0dGNjY1FRUTw8PCUlJSwAAAAAFQAUAAAEZjDISau9OOutnF9V5zEX4QDPQD2AY2QKAJASItOY8uxqcHoaRSPWCCRQC0dQEWAhnJ2lEQUoRmFMn+x1zWUPM0n3osgGGgKxMrMoStJqDc/CeMArA8fugZgQ9ikXBT0YdxuHiImJEQA7%22%0A%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20label%3A%20%22Hide%22%2C%0A%20%20%20%20%20%20%20value%3A%20%22%5Bhide%5D%2C%5B/hide%5D%22%2C%0A%20%20%20%20%20%20%20image%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsSAAALEgHS3X78AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAHpSURBVHjapJK9aipRFEbXOc6MM5EkiIX5KaYShJQ+gpVtIF1Kq4Av4RuIZao0AUkTiAi+gEUgSipjNQYcizRJBowDZ2Z2ConFLW5yb1a3i734PvZWIvIKuPwfMSIST6dTCYJAvgiCQCaTyXYOw1Du7+8lSRL5g1gDMhwOub29ZbFYAGCMIY5jAJbLJYPBgKurK9I0JYoiZrPZVwKxADzPo9frMR6Pqdfr+L7PYrEgDEP6/T5hGFKr1Xh+fqbT6WCMoVqtcnFxgQb4+Pjg9PSUdrvNaDQijmMeHx+5ubmh2+1yfn6O4zhcXl6SJAknJyfc3d0xn883Aq01+/v72LaNZVmICGmakqYpjuNQKBRIkoT393dc18X3fc7OziiVShtBPp/Htm2UUhQKBQB836fRaNBqtbi+vsayLJrNJqvVislkQhRFuK6LEpF1FEWu1hrP83h7e8PzPIwx7O3t8fDwgOd5HB0dUSwWeXp64uXlhUqlwuHhYaxEZP2bP7AAVqsVy+USpRRKqW+30jRld3eXg4MDLID1ek0QBIgIWutvBcYYjo+PKZfLG4HWGsdxfixQSpHL5QDQ/BIL2N49y7Kt+W8kSUKWZVuByuVy7Ozs/LiCbds4jrNpIyKvWZa5xph/iq61xrbt+HMA/wYFcDfOeqsAAAAASUVORK5CYII%3D%22%0A%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%5D%3B%20%20%20%20%20%20%20%20%0A%0Avar%20menuPopup%20%3D%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%20%20%20%20%20%0Aarray.forEach%28function%28%20m%20%29%20%7B%0A%20%20%20%20%20if%20%28%20%22separator%22%20in%20m%20%29%20%7B%20menuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%0A%20%20%20%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20menuitem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20%20%20menuitem.setAttribute%28%22value%22%2C%20m.value%29%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20menuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20%20%20%20menuitem.setAttribute%28%22image%22%2C%20m.image%29%3B%0A%20%20%20%20%20menuitem.addEventListener%28%22click%22%2C%20insertBBcode%2C%20false%29%3B%0A%20%20%20%20%20menuPopup.appendChild%28%20menuitem%20%29%3B%0A%7D%29%3B%20%0AaddDestructor%28function%28%29%20%7B%20menuPopup.parentNode.removeChild%28%20menuPopup%20%29%20%7D%29%3B%20//%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0443%u0431%u043B%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%20%0A%20%20%20%20%0A%20%20%20%20%20%20%20%0A//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20bb%20%u043A%u043E%u0434%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%20....................%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0Afunction%20insertBBcode%28%20e%20%29%20%7B%20%0A%20%20%20var%20array%20%3D%20e.target.getAttribute%28%22value%22%29.split%28%22%2C%22%29%3B%0A%20%20%20if%20%28%20%21array%5B1%5D%20%29%20return%3B%0A%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20open%20%3D%20array%5B0%5D%3B%0A%20%20%20%20%20%20%20%20var%20close%20%3D%20array%5B1%5D%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20var%20open%20%3D%20array%5B0%5D%20+%20gClipboard.read%28%29%3B%0A%20%20%20%20%20%20%20%20var%20close%20%3D%20array%5B1%5D%3B%0A%20%20%20%20%20%20%20%20%7D%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%0A%20%20%20var%20theBox%20%3D%20gBrowser.contentDocument.activeElement%3B%0A%20%20%20var%20startPos%20%3D%20theBox.selectionStart%3B%0A%20%20%20var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%20%20%20var%20oPosition%20%3D%20theBox.scrollTop%3B%0A%20%20%20var%20oHeight%20%3D%20theBox.scrollHeight%3B%0A%20%20%20var%20text%20%3D%20theBox.value.substring%280%2CstartPos%29%3B%0A%20%20%20text%20+%3D%20open+theBox.value.substring%28startPos%2C%20endPos%29+close%3B%0A%20%20%20text%20+%3D%20theBox.value.substring%28endPos%2C%20theBox.value.length%29%3B%0A%20%20%20theBox.value%20%3D%20text%3B%0A%20%20%20theBox.selectionStart%20%3D%20startPos%3B%0A%20%20%20theBox.selectionEnd%20%3D%20endPos%20+%20open.length%20+%20close.length%3B%0A%20%20%20var%20nHeight%20%3D%20theBox.scrollHeight%20-%20oHeight%3B%0A%20%20%20theBox.scrollTop%20%3D%20oPosition%20+%20nHeight%3B%20%20%20%20%20%20%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%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%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отредактировано bunda1 (27-06-2013 21:34:50)
Отсутствует
А если такой шаблон:
спс... глянем.
P.S. Вродеf это фрагмент чего то... ПКМ(он должен отрабатывать вставку из буфера обмена) не работает или я что то не пронял.
Отредактировано Indomito (27-06-2013 22:46:46)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует