По поводу кнопки "Bookmarks Folder button for Custom Buttons"
http://infocatcher.ucoz.net/js/cb/bookmarks.js
Можно ли добавить снизу меню - сепаратор и "open all in tabs" ? И как сделать ? )
Отсутствует
Можно ли добавить снизу меню - сепаратор и "open all in tabs" ? И как сделать ? )
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
но второй вариант растягивает статусбар по вертикали(даже если название кнопки пустое)
Принципиальное отличие только в
а первый иногда глючит - после рестарта кнопка не появляется в статусбаре а оказывается в окне Настройка панелей и её надо вручную заново вытаскивать.
Видимо, последствия настройки панелей инструментов.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
okkamas_knife
this.classList.remove("toolbarbutton-1") удаляет "toolbarbutton-1" из списка классов (атрибут "class").
Последствия только одни: перестанут применяться стили для .toolbarbutton-1.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Заметил нехороший глюк на портативном FF17 и custombuttons-0.0.5.6pre3. Если переместить папку с FF на другой диск или в другую папку и нажать правой клавишей на любую CB кнопку то в контекстном меню кнопки отображаются все меню CB кнопок которые открывают свои меню по ПКМ. Но после того как FF два раза запустить и закрыть глюк пропадает и больше не появляется. И так каждый раз при перемещение. И в консоли ошибок пусто.
Добавлено 03-01-2013 20:04:19
Мне самому кажетса что ошибка в коде который создает меню которое открывается по ПКМ, но найти не могу:
var Cb = custombuttons; this.mObj = Cb.getCbContextObj(this); this.init = function(x) { x.mObj.setSub(); var nItem = {}, mItem = {}; document.getElementById(CB2const.sCBCtxtMenu).setAttribute("oncommand", "event.stopPropagation()"); for(var i in x.ss) { nItem = new x.mObj.getItem(); nItem.id = 'Note'; nItem.label = x.ss[i].label; if (nItem.label == "separator") { nItem = document.createElement("menuseparator"); } nItem.value = String(i); mItem = x.mObj.insertBefore(nItem , x.mObj.oMenu.lastChild); this.ss[i].sItemId = mItem.id; mItem.setAttribute('oncommand',x.ss[i].cmd); if("type" in x.ss[i]) mItem.setAttribute('type', x.ss[i].type); mItem.setAttribute('checked', x.ss[i].cek); mItem.setAttribute( 'autocheck', true); } x.mObj.getItem(); nItem = x.mObj.getItem(); nItem.id = 'Note'; this.separator = x.mObj.insertBefore( nItem , x.mObj.oMenu.lastChild); } this.init(this);
Отредактировано bunda1 (03-01-2013 20:12:35)
Отсутствует
okkamas_knife
Мистика однако, но рестарт не убирает этот глюк, он пропадает только если FF два раза запустить и закрыть.
И я не использую версию от Халлера а вот это Portable Firefox 15.0 (с возможностью установки браузером по умолчанию) :: RuTracker.org (ex torrents.ru)
Отсутствует
У меня даже не получилось
отцентровать label по вертикали в пределах кнопки.
Может я не понял о чем речь, но
/* dct-style #digital-clock-text { position: absolute!important; margin-top:3px!important; color: #b73520 !important; font-weight: bold !important; } dct-style */
Отсутствует
вот так?
О ! Здо́рово ! Благодарю. Для маленьких шрифтов отлично помогает. Для больши́х - нет.
Но когда я это писал, думал, что хорошо-бы сделать в коде принудительное центрование
для любого размера шрифта, а теперь понял, что правильней - никаких ограничений,
пусть каждый подгоняет под себя.
Кто ещё такое наблюдал?
Мне самому кажетса что ошибка в коде который создает меню которое открывается по ПКМ
Я, как ни старался, не смог увидеть такой глюк
Но интересно, если попробовать, например Toggle Find+3, но без этого кода (набросок),
то он будет участвовать в глюке, или не будет ?
Отредактировано Dumby (04-01-2013 18:25:55)
Отсутствует
okkamas_knife
Очевидно, следует обратиться к документации:
http://adblockplus.org/en/IAdblockPlus
Только там не видать проверки наличия.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Но интересно, если попробовать, например Toggle Find+3, но без этого кода (набросок),
то он будет участвовать в глюке, или не будет ?
Без этого кода Toggle Find+3 не участвует в глюке, безграничное спасибо.
Переделаю все кнопки меню на твой код и попробую уменьшить его.
Отредактировано bunda1 (05-01-2013 07:00:07)
Отсутствует
Я, как ни старался, не смог увидеть такой глюк
Да ты прав. Попробовал на чистом профиле и там глюка с меню нет. Похоже у меня какая то кнопка глючит но найти будет трудно потому что кнопок и кодов на старом профиле ужасно много.
Кстати тут кнопка для перевода которая тоже по ПКМ открывает своё меню, подскажи пожалуйста как к этому меню приделать подменю с стандартным контекстным меню CB кнопки. И пожалуйста если не трудно посмотри код меню кнопки и функцию translateTextInPopup(str) { ... может там можно что то оптимизировать.
// Настройка функций кликов мыши для кнопки ........................................................................... this.onclick = function(e) { if ( e.button == 0 ) { // ЛКМ var str = getSelect(); if ( str ) custombuttons.getPrefs ("Translate.TextInPopup")? translateTextInPopup(str): translateTextInGoogle(str); if ( !str ) custombuttons.getPrefs ("Translate.PageInMicrosoft")? translatePageInMicrosoft(): ( content.location.protocol == 'https:'? translatePageInMicrosoft(): translatePageInGoogle() ); } if ( e.button == 1 ) translateTextInGoogle( gClipboard.read() ); // СКМ if ( e.button == 2 && e.metaKey ) gShowPopup(this); // ПКМ + Ctrl if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { // ПКМ e.preventDefault(); document.getElementById("Translate-popup").showPopup(this, -1, -1, "popup", "bottomleft", "topleft"); } }; // Подсказка у нопки ................................................................................................. this.tooltipText = "Translate \nЛ = Перевести страницу / выделенный текст \nС = Перевести текст из буфера обмена \nП = Меню"; // Проверить наличие строк в 'about:config' и создать если не существует ................................................... if ( !custombuttons.isPref("Translate.nextPage") ) ["Translate.TextInPopup", "Translate.PageInMicrosoft", "Translate.nextPage"].forEach(function(pref) { custombuttons.setPrefs( pref, false ) }); // Создать меню кнопки ............................................................................................. menuPopup = document.getElementById("mainPopupSet").appendChild(document.createElement("menupopup")); menuPopup.setAttribute("id", "Translate-popup"); // массив с данными для создание пунктов меню .... var array = [ { label: "Перевод текста в маленьком окошке", checked:( custombuttons.getPrefs('Translate.TextInPopup') ), onclick:"custombuttons.setPrefs('Translate.TextInPopup', !custombuttons.getPrefs('Translate.TextInPopup'))" }, { label: "Перевод страницы в переводчике Microsoft", checked:( custombuttons.getPrefs('Translate.PageInMicrosoft') ), onclick:"custombuttons.setPrefs('Translate.PageInMicrosoft', !custombuttons.getPrefs('Translate.PageInMicrosoft'))" }, { label: "Перевод страницы в новой вкладке сразу справа", checked:( custombuttons.getPrefs('Translate.nextPage') ), onclick:"custombuttons.setPrefs('Translate.nextPage', !custombuttons.getPrefs('Translate.nextPage'))" } ]; // цикл по очереди добавляет из массива нужные атрибуты к пунктам меню .... array.forEach(function( m ) { var menuItem = document.createElement("menuitem"); menuItem.setAttribute("label", m.label); menuItem.setAttribute("onclick", m.onclick); menuItem.setAttribute("type", "checkbox"); menuItem.setAttribute("checked", m.checked); menuPopup.appendChild(menuItem); }); /* Получить выделенный текст из страницы или текстового поля, если текст не выделен функция отдаст 'false' .....................................................................*/ function getSelect() { // выделенный текст из страницы .... var selection = document.commandDispatcher.focusedWindow.getSelection(); // выделенный текст из текстового поля .... if ( selection.toString().length == 0 ) { var theBox = document.commandDispatcher.focusedElement; if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selection = theBox.value.substring(startPos, endPos); } } return ( selection == '')? false: selection; }; /* Переводит страницы в переводчике Google зависимости от настроек в 'about:config' в новой активной вкладке сразу справа или в текущей вкладке ........................................................*/ function translatePageInGoogle() { var url = "http://translate.google.com/translate?u=" + content.location + "&hl=ru&ie=UTF-8&sl=auto&tl=ru"; if ( custombuttons.getPrefs ("Translate.nextPage") ) { var x = gBrowser.mCurrentTab._tPos +1; gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), x); // в новой активной вкладке } else loadURI(url); // в текущей вкладке }; /* Переводит в переводчике Microsoft страницы в новой активной вкладке сразу справа от текущей вкладки или в текущей вкладке в зависимости от настроек в 'about:config' .....................................*/ function translatePageInMicrosoft() { // разрешить страницу для расширения NoScript .... if ( "noscriptUtil" in window ) { var autoReload = custombuttons.getPrefs("noscript.autoReload"); if ( autoReload ) custombuttons.setPrefs("noscript.autoReload", false); noscriptOverlay.allowPage(); if ( autoReload ) setTimeout(function() { custombuttons.setPrefs("noscript.autoReload", true) }, 10) } // перевод страницы в новой активной вкладке .... if ( custombuttons.getPrefs("Translate.nextPage") ) { var newTab = gBrowser.duplicateTab(gBrowser.mCurrentTab); ++gBrowser.tabContainer.selectedIndex; //... gBrowser.addEventListener("pageshow", function(event) { gBrowser.removeEventListener("pageshow", arguments.callee, true); content.document.location = "javascript:var s = content.document.createElement('script'); s.type = 'text/javascript'; s.src = 'http://labs.microsofttranslator.com/bookmarklet/default.aspx?f=js&to=ru'; content.document.body.insertBefore(s, document.body.firstChild); void(0);"; }, true); } // в текущей вкладке .... else content.document.location = "javascript:var s = content.document.createElement('script'); s.type = 'text/javascript'; s.src = 'http://labs.microsofttranslator.com/bookmarklet/default.aspx?f=js&to=ru'; content.document.body.insertBefore(s, document.body.firstChild); void(0);"; }; function translateTextInGoogle(str) { var x = gBrowser.mCurrentTab._tPos +1; var url = "http://translate.google.com/translate_t?hl=ru#auto|ru|" + str; gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), x); }; // Перевести текст в Google переводчике в маленьком окошке .............................................. function translateTextInPopup(str) { var t = str; trtext = t; var url1 = "http://translate.google.com/translate_t?prev=hp&hl=ru&js=y&text="; var url2 = "&file=&sl=en&tl=ru&history_state0=#"; var urltr=url1+trtext+url2; var xmlhttp; function gettransdata() { xmlhttp=GetXmlHttpObject(); if ( xmlhttp==null ) { alert ("Your browser does not support AJAX!"); return; }; xmlhttp.onreadystatechange=stateChanged; xmlhttp.open("GET",urltr,true); xmlhttp.send(null); }; function stateChanged() { if ( xmlhttp.readyState==4 ) { var trin=xmlhttp.responseText; var chkpoint='<span id=result_box'; var arrayOfStrings = trin.split(chkpoint); var trouttmp=arrayOfStrings[1]; var chkpoint='<div id=spell-place-holder'; var arrayOfStrings = trouttmp.split(chkpoint); trouttmp1=arrayOfStrings[0]; trouttmp2=trouttmp1.replace(/<span.+?">/g,"") trouttmp2=trouttmp2.replace(/<\/span>/g,"") trouttmp2=trouttmp2.replace(/class="long_text">/g,"") trouttmp2=trouttmp2.replace(/class="short_text">/g,"") trouttmp2=trouttmp2.replace(/class="medium_text">/g,"") trouttmp2=trouttmp2.replace(/<br><\/div><\/div>/g,"") var jurl='data:text/html,<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><html><head><title></title><meta charset="utf-8"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body>'+trouttmp2+'</body></html>'; var sizex = screen.width/2.2 var sizey = screen.height/2.2 var posx=screen.width-sizex; var posy=screen.height-sizey; qwertywnd = window.open(jurl, this.name, "width="+(sizex-30)+",height="+(sizey-87)+",screenX="+posx+",screenY="+posy+",status=no,scrollbars=yes,resizable=yes"); if ( qwertywnd.focus ) { qwertywnd.focus() }; } }; function GetXmlHttpObject() { if ( window.XMLHttpRequest ) { return new XMLHttpRequest() } if ( window.ActiveXObject ) { return new ActiveXObject("Microsoft.XMLHTTP") } return null; }; gettransdata(); // закрыть окно перевода кликом на странице .... gBrowser.addEventListener("click", function(e) { qwertywnd.close(); this.removeEventListener("click", arguments.callee, true); }, true); };
Отредактировано bunda1 (05-01-2013 07:04:18)
Отсутствует
как к этому меню приделать подменю с стандартным контекстным меню CB кнопки.
Вроде прицепилось , всякие id сам добавь, если сочтёшь нужным.
// Настройка функций кликов мыши для кнопки ........................................................................... this.onclick = function(e) { if ( e.button == 0 ) { // ЛКМ var str = getSelect(); if ( str ) custombuttons.getPrefs ("Translate.TextInPopup")? translateTextInPopup(str): translateTextInGoogle(str); if ( !str ) custombuttons.getPrefs ("Translate.PageInMicrosoft")? translatePageInMicrosoft(): ( content.location.protocol == 'https:'? translatePageInMicrosoft(): translatePageInGoogle() ); } if ( e.button == 1 ) translateTextInGoogle( gClipboard.read() ); // СКМ if ( e.button == 2 && e.metaKey ) gShowPopup(this); // ПКМ + Ctrl if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { // ПКМ e.preventDefault(); menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft"); } }; // Подсказка у нопки ................................................................................................. this.tooltipText = "Translate \nЛ = Перевести страницу / выделенный текст \nС = Перевести текст из буфера обмена \nП = Меню"; // Проверить наличие строк в 'about:config' и создать если не существует ................................................... if ( !custombuttons.isPref("Translate.nextPage") ) ["Translate.TextInPopup", "Translate.PageInMicrosoft", "Translate.nextPage"].forEach(function(pref) { custombuttons.setPrefs( pref, false ) }); // Создать меню кнопки ............................................................................................. var mainPopupSet = document.getElementById("mainPopupSet"); var menuPopup = mainPopupSet.appendChild(document.createElement("menupopup")); menuPopup.setAttribute("id", "Translate-popup"); // массив с данными для создание пунктов меню .... var array = [ { label: "Перевод текста в маленьком окошке", checked:( custombuttons.getPrefs('Translate.TextInPopup') ), onclick:"custombuttons.setPrefs('Translate.TextInPopup', !custombuttons.getPrefs('Translate.TextInPopup'))" }, { label: "Перевод страницы в переводчике Microsoft", checked:( custombuttons.getPrefs('Translate.PageInMicrosoft') ), onclick:"custombuttons.setPrefs('Translate.PageInMicrosoft', !custombuttons.getPrefs('Translate.PageInMicrosoft'))" }, { label: "Перевод страницы в новой вкладке сразу справа", checked:( custombuttons.getPrefs('Translate.nextPage') ), onclick:"custombuttons.setPrefs('Translate.nextPage', !custombuttons.getPrefs('Translate.nextPage'))" } ]; // цикл по очереди добавляет из массива нужные атрибуты к пунктам меню .... array.forEach(function( m ) { var menuItem = document.createElement("menuitem"); menuItem.setAttribute("label", m.label); menuItem.setAttribute("onclick", m.onclick); menuItem.setAttribute("type", "checkbox"); menuItem.setAttribute("checked", m.checked); menuPopup.appendChild(menuItem); }); var sep = document.createElement("menuseparator"); menuPopup.appendChild(sep); var cbContextPopup = document.getElementById("custombuttons-contextpopup"); //------------------------------ var clon = cbContextPopup.cloneNode(true); clon.setAttribute("onpopupshowing", "document.popupNode = document.getElementById('" + this.id + "')"); var menu = document.createElement("menu"); menu.setAttribute("label", "Меню кнопки"); menu.appendChild(clon); menuPopup.appendChild(menu); //----------- or ---------------- /* :D Array.slice(cbContextPopup.children).forEach(function(menuitem) { menuPopup.appendChild(menuitem.cloneNode(true)); }); menuPopup.setAttribute("onpopupshowing", "document.popupNode = document.getElementById('" + this.id + "')"); */ //------------------------------- /* Получить выделенный текст из страницы или текстового поля, если текст не выделен функция отдаст 'false' .....................................................................*/ function getSelect() { // выделенный текст из страницы .... var selection = document.commandDispatcher.focusedWindow.getSelection(); // выделенный текст из текстового поля .... if ( selection.toString().length == 0 ) { var theBox = document.commandDispatcher.focusedElement; if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selection = theBox.value.substring(startPos, endPos); } } return ( selection == '')? false: selection; }; /* Переводит страницы в переводчике Google зависимости от настроек в 'about:config' в новой активной вкладке сразу справа или в текущей вкладке ........................................................*/ function translatePageInGoogle() { var url = "http://translate.google.com/translate?u=" + content.location + "&hl=ru&ie=UTF-8&sl=auto&tl=ru"; if ( custombuttons.getPrefs ("Translate.nextPage") ) { var x = gBrowser.mCurrentTab._tPos +1; gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), x); // в новой активной вкладке } else loadURI(url); // в текущей вкладке }; /* Переводит в переводчике Microsoft страницы в новой активной вкладке сразу справа от текущей вкладки или в текущей вкладке в зависимости от настроек в 'about:config' .....................................*/ function translatePageInMicrosoft() { // разрешить страницу для расширения NoScript .... if ( "noscriptUtil" in window ) { var autoReload = custombuttons.getPrefs("noscript.autoReload"); if ( autoReload ) custombuttons.setPrefs("noscript.autoReload", false); noscriptOverlay.allowPage(); if ( autoReload ) setTimeout(function() { custombuttons.setPrefs("noscript.autoReload", true) }, 10) } // перевод страницы в новой активной вкладке .... if ( custombuttons.getPrefs("Translate.nextPage") ) { var newTab = gBrowser.duplicateTab(gBrowser.mCurrentTab); ++gBrowser.tabContainer.selectedIndex; //... gBrowser.addEventListener("pageshow", function(event) { gBrowser.removeEventListener("pageshow", arguments.callee, true); content.document.location = "javascript:var s = content.document.createElement('script'); s.type = 'text/javascript'; s.src = 'http://labs.microsofttranslator.com/bookmarklet/default.aspx?f=js&to=ru'; content.document.body.insertBefore(s, document.body.firstChild); void(0);"; }, true); } // в текущей вкладке .... else content.document.location = "javascript:var s = content.document.createElement('script'); s.type = 'text/javascript'; s.src = 'http://labs.microsofttranslator.com/bookmarklet/default.aspx?f=js&to=ru'; content.document.body.insertBefore(s, document.body.firstChild); void(0);"; }; function translateTextInGoogle(str) { var x = gBrowser.mCurrentTab._tPos +1; var url = "http://translate.google.com/translate_t?hl=ru#auto|ru|" + str; gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), x); }; // Перевести текст в Google переводчике в маленьком окошке .............................................. function translateTextInPopup(str) { var t = str; trtext = t; var url1 = "http://translate.google.com/translate_t?prev=hp&hl=ru&js=y&text="; var url2 = "&file=&sl=en&tl=ru&history_state0=#"; var urltr=url1+trtext+url2; var xmlhttp; function gettransdata() { xmlhttp=GetXmlHttpObject(); if ( xmlhttp==null ) { alert ("Your browser does not support AJAX!"); return; }; xmlhttp.onreadystatechange=stateChanged; xmlhttp.open("GET",urltr,true); xmlhttp.send(null); }; function stateChanged() { if ( xmlhttp.readyState==4 ) { var trin=xmlhttp.responseText; var chkpoint='<span id=result_box'; var arrayOfStrings = trin.split(chkpoint); var trouttmp=arrayOfStrings[1]; var chkpoint='<div id=spell-place-holder'; var arrayOfStrings = trouttmp.split(chkpoint); trouttmp1=arrayOfStrings[0]; trouttmp2=trouttmp1.replace(/<span.+?">/g,"") trouttmp2=trouttmp2.replace(/<\/span>/g,"") trouttmp2=trouttmp2.replace(/class="long_text">/g,"") trouttmp2=trouttmp2.replace(/class="short_text">/g,"") trouttmp2=trouttmp2.replace(/class="medium_text">/g,"") trouttmp2=trouttmp2.replace(/<br><\/div><\/div>/g,"") var jurl='data:text/html,<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><html><head><title></title><meta charset="utf-8"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body>'+trouttmp2+'</body></html>'; var sizex = screen.width/2.2 var sizey = screen.height/2.2 var posx=screen.width-sizex; var posy=screen.height-sizey; qwertywnd = window.open(jurl, this.name, "width="+(sizex-30)+",height="+(sizey-87)+",screenX="+posx+",screenY="+posy+",status=no,scrollbars=yes,resizable=yes"); if ( qwertywnd.focus ) { qwertywnd.focus() }; } }; function GetXmlHttpObject() { if ( window.XMLHttpRequest ) { return new XMLHttpRequest() } if ( window.ActiveXObject ) { return new ActiveXObject("Microsoft.XMLHTTP") } return null; }; gettransdata(); // закрыть окно перевода кликом на странице .... gBrowser.addEventListener("click", function(e) { qwertywnd.close(); this.removeEventListener("click", arguments.callee, true); }, true); }; this.onDestroy = function() { mainPopupSet.removeChild(menuPopup); }
translateTextInPopup(str) { ... может там можно что то оптимизировать.
Как вариант:
function translateTextInPopup(text) { const beg = "http://translate.google.com/translate_t?prev=hp&hl=ru&js=y&text="; const end = "&file=&sl=en&tl=ru&history_state0=#"; var url = beg + text + end; var req = new XMLHttpRequest(); req.open("GET", url, true); req.onload = function() { var res = req.responseText; var suHTML = Cc["@mozilla.org/feed-unescapehtml;1"].getService(Ci.nsIScriptableUnescapeHTML); var doc = document.implementation.createHTMLDocument(""); doc.body.appendChild(suHTML.parseFragment(res, false, null, doc.body)); var ruHTML = doc.getElementById("result_box").innerHTML; // or var ruText = doc.getElementById("result_box").textContent; var dataURL = 'data:text/html,<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><html><head><meta charset="utf-8"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body>'; dataURL += ruHTML + '</body></html>'; var sizeX = screen.width/2.2 var sizeY = screen.height/2.2 var posX=screen.width-sizeX; var posY=screen.height-sizeY; var win = window.open(dataURL, "", "width="+(sizeX-30)+",height="+(sizeY-87)+",screenX="+posX+",screenY="+posY+",status=no,scrollbars=yes,resizable=yes"); win.focus(); } req.channel.loadFlags |= req.channel.LOAD_FROM_CACHE; // if possible req.send(null); }
Отредактировано Dumby (05-01-2013 15:28:15)
Отсутствует
google-translate
Версия google-translate.js в виде кнопки. Переводит выделенный текст (без особых ограничений на размер) или всю страницу на русский. Также добавляет пункты меню: «Перевести на русский» и «Перевести на английский».
Установил эту кнопку. Она постоянно отваливается, иконка кнопки становится неактивной-полуактивной... Кроме того пункт контекстного меню «Перевести на английский» добавляется не всегда, а по непонятному сценарию.
Автор, посмотри, пожалуйста.
Отсутствует
Отсутствует
а каким способом удалял?
в цсс насколько знаю есть два варианта один просто удаляет другой схлопывает
приведи здесь цсс правила что используешь для удаления
Код не сохранил. Но мысль интересная, надо проверить.
Хотя мне кажется что Css тут не поможет.
Отредактировано bunda1 (08-01-2013 20:39:35)
Отсутствует
bunda1
Search and open +4 http://forum.mozilla-russia.org/viewtopic.php?pid=463808#p463808
Можно сделать открытие вкладок активными, привык просто, щелкнул, сразу открылось. Я так понимаю поиск из адресной строки одним левым кликом не получится, первый клик копирует в буфер, второй открывает, или?
Может кто знает как можно перенести кнопку в urlbar, расширения типа url-addon-bar это как-то делают, но не хочется устанавливать лишнее.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
код перевода, теперь код выглядит красиво.
Да, выглядит получше, но
var suHTML = Cc["@mozilla.org/feed-unescapehtml;1"].getService(Ci.nsIScriptableUnescapeHTML); var doc = document.implementation.createHTMLDocument(""); const beg = "http://translate.google.com/translate_t?prev=hp&hl=ru&js=y&text="; const end = "&file=&sl=en&tl=ru&history_state0=#"; const dataURLbeg = 'data:text/html,<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><html><head><meta charset="utf-8"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body>'; const dataURLend = '</body></html>'; function translateTextInPopup(text) { var url = beg + text + end; var req = new XMLHttpRequest(); req.open("GET", url, true); req.onload = function() { var res = req.responseText; doc.body.textContent = ""; doc.body.appendChild(suHTML.parseFragment(res, false, null, doc.body)); var ruHTML = doc.getElementById("result_box").innerHTML; // or var ruText = doc.getElementById("result_box").textContent; var dataURL = dataURLbeg + ruHTML + dataURLend; var sizeX = screen.width/2.2 var sizeY = screen.height/2.2 var posX=screen.width-sizeX; var posY=screen.height-sizeY; var win = window.open(dataURL, "", "width="+(sizeX-30)+",height="+(sizeY-87)+",screenX="+posX+",screenY="+posY+",status=no,scrollbars=yes,resizable=yes"); win.focus(); } req.channel.loadFlags |= req.channel.LOAD_FROM_CACHE; // if possible req.send(null); }
пытался удалить его Css кодом но остаются пустое поле на странице, такого же размера.
Наверно я не понял вопрос, но такой стиль убрал то,
что на скриншоте так, как если-бы этого и небыло.
@namespace url(http://www.w3.org/1999/xhtml); @-moz-document domain("translate.google.com") { #gb, #gt-appbar { display: none !important } }
Отсутствует
bunda1 попробуй переделать вот этот скрипт:
javascript:{d=document;b=d.body;o=d.createElement('scri'+'pt');o.setAttribute('src','http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit');o.setAttribute('type','text/javascript');b.appendChild(o);v=b.insertBefore(d.createElement('div'),b.firstChild);v.id='google_translate_element';v.style.display='none';p=d.createElement('scri'+'pt');p.text='function%20googleTranslateElementInit(){new%20google.translate.TranslateElement({pageLanguage:%22%22},%22google_translate_element%22);}';p.setAttribute('type','text/javascript');b.appendChild(p);}void%200
Его особенности:
отсутствует верхний фрейм
нет автоматического перевода
если использовать в твоей кнопке как открыть в новой вкладке, то вкладку, с которой переводилась не закрывается
Далее:
если использовать твой код открытия в новой вкладке происходит следующее:
если вкладка, которую надо перевести не последняя, то дублируется и переводится последняя вкладка.
Чтобы этого не происходило, я использую код, который нашел в этой ветке:
var orgTab = gBrowser.mCurrentTab;
var newTab = gBrowser.duplicateTab(orgTab);
gBrowser.moveTabTo(newTab, ++orgTab._tPos);
gBrowser.selectedTab = newTab;
Отсутствует
попробуй это правило добавить в адблок
translate.google.ru###gb
Спасибо для переводчика текста отлично работает но при переводе страницы в Google переводчике остаются пустое поле.
Добавлено 09-01-2013 20:40:30
Наверно я не понял вопрос, но такой стиль убрал то,
что на скриншоте так, как если-бы этого и небыло.
Наверно я не правильно описал проблему, извиняюсь
Речь о переводе страницы в Google переводчике.
Отредактировано bunda1 (09-01-2013 20:43:12)
Отсутствует
Речь о переводе страницы в Google переводчике
.
bunda1
A simple script that removes upper bar from translated sites by Google Translator (e.g. runned by Google search or translating bookmarklet)
Правило для адблока:
translate.google.com.ru##.jfk-butterBar.jfk-butterBar-info.jfk-butterBar-shown
Отредактировано Pony_Smile_Pack (09-01-2013 21:12:40)
Отсутствует
bunda1
Search and open +4
Можно сделать открытие вкладок активными, привык просто, щелкнул, сразу открылось. Я так понимаю поиск из адресной строки одним левым кликом не получится, первый клик копирует в буфер, второй открывает, или?
Мне кажется Search and open +4 не работает на FF19.
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%3ESearch%20and%20open%20+%20%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CAAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9Pt8xetPtu9FsfFNtu%252BTzvb2%252B%252Fne4dFJeBw0egA%252FfAJAfAA8ewBBegAAAAD%252B%252FPtft98Mp%252BwWsfAVsvEbs%252FQeqvF8xO7%252F%252F%252F63yqkxdgM7gwE%252FggM%252BfQA%252BegBDeQDe7PIbotgQufcMufEPtfIPsvAbs%252FQvq%252Bfz%252Bf%252F%252B%252B%252FZKhR05hgBBhQI8hgBAgAI9ewD0%252B%252Fg3pswAtO8Cxf4Kw%252FsJvvYAqupKsNv%252B%252Fv7%252F%252FP5VkSU0iQA7jQA9hgBDgQU%252BfQH%252F%252Ff%252FQ6fM4sM4KsN8AteMCruIqqdbZ7PH8%252Fv%252Fg6Nc%252Fhg05kAA8jAM9iQI%252BhQA%252BgQDQu6b97uv%252F%252F%252F7V8Pqw3eiWz97q8%252Ff%252F%252F%252F%252F7%252FPptpkkqjQE4kwA7kAA5iwI8iAA8hQCOSSKdXjiyflbAkG7u2s%252F%252B%252F%252F39%252F%252F7r8utrqEYtjQE8lgA7kwA7kwA9jwA9igA9hACiWSekVRyeSgiYSBHx6N%252F%252B%252Fv7k7OFRmiYtlAA5lwI7lwI4lAA7kgI9jwE9iwI4iQCoVhWcTxCmb0K%252BooT8%252Fv%252F7%252F%252F%252FJ2r8fdwI1mwA3mQA3mgA8lAE8lAE4jwA9iwE%252BhwGfXifWvqz%252B%252Ff%252F58u%252Fev6Dt4tr%252B%252F%252F2ZuIUsggA7mgM6mAM3lgA5lgA6kQE%252FkwBChwHt4dv%252F%252F%252F728ei1bCi7VAC5XQ7kz7n%252F%252F%252F6bsZkgcB03lQA9lgM7kwA2iQktZToPK4r9%252F%252F%252F9%252F%252F%252FSqYK5UwDKZAS9WALIkFn%252B%252F%252F3%252F%252BP8oKccGGcIRJrERILYFEMwAAuEAAdX%252F%252Ff7%252F%252FP%252B%252BfDvGXQLIZgLEWgLOjlf7%252F%252F%252F%252F%252F%252F9QU90EAPQAAf8DAP0AAfMAAOUDAtr%252F%252F%252F%252F7%252B%252Fu2bCTIYwDPZgDBWQDSr4P%252F%252Fv%252F%252F%252FP5GRuABAPkAA%252FwBAfkDAPAAAesAAN%252F%252F%252B%252Fz%252F%252F%252F64g1C5VwDMYwK8Yg7y5tz8%252Fv%252FV1PYKDOcAAP0DAf4AAf0AAfYEAOwAAuAAAAD%252F%252FPvi28ymXyChTATRrIb8%252F%252F3v8fk6P8MAAdUCAvoAAP0CAP0AAfYAAO4AAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAA%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%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%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...............................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%20//%20%u041B%u041A%u041C%20%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20e.originalTarget.nodeName%20%21%3D%20%22xul%3Atoolbarbutton%22%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20str%20%3D%20getSelect%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20%21str%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20ss%20%3D%20Cc%5B%22@mozilla.org/browser/search-service%3B1%22%5D.getService%28Ci.nsIBrowserSearchService%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20submission%20%3D%20ss.currentEngine.getSubmission%28str%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gBrowser.loadOneTab%28submission.uri.spec%2C%20null%2C%20null%2C%20submission.postData%2C%20false%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%7B%20%20openSelectedLinks%28%29%20%7D%3B%20//%20%u0421%u041A%u041C%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%26%26%20e.button%20%3D%3D%202%20%29%20%20%7B%20//%20%u041F%u041A%u041C%20%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20text%20%3D%20getSelect%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21%21text%20%29%20gBrowser.loadOneTab%28%20text%2C%20null%2C%20null%2C%20null%2C%20false%2C%20false%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%20%20%20%20%20%20%20%20%0A%7D%3B%0A%0A%0A//%20%u041E%u0431%u044A%u044F%u0432%u043B%u044F%u0435%u043C%20%u043F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u044B%u0435%20%u0434%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20...................................................%0Avar%20alertsService%20%3D%20Components.classes%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Components.interfaces.nsIAlertsService%29%3B%0Avar%20_this%20%3D%20this%3B%0A%0A%0A%0A//%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%u0441%u0435%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0435%20%u0441%u0441%u044B%u043B%u043A%u0438%20%u0438%u043B%u0438%20%u0432%u0441%u0435%20%u0441%u0441%u044B%u043B%u043A%u0438%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20................................%0Afunction%20openSelectedLinks%28%29%20%7B%0A%20%20%20%20%20warn_if_opening_more_than%20%3D%2016%3B%0A%20%20%20%20%20var%20browser%20%3D%20getBrowser%28%29%3B%0A%20%20%20%20%20var%20n_to_open%2Cdl%2Cdll%2Ci%3B%0A%20%20%20%20%20%0A%20%20%20%20%20function%20linkIsSafe%28u%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28u.substr%280%2C7%29%3D%3D%27mailto%3A%27%20%29%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28u.substr%280%2C11%29%3D%3D%27javascript%3A%27%29%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%7D%0A%20%20%20%20%20n_to_open%20%3D%200%3B%0A%20%20%20%20%20var%20dl%20%3D%20window._content.document.links%3B%0A%20%20%20%20%20dll%20%3D%20dl.length%3B%0A%20%20%20%20%20if%20%28%20window._content.getSelection%20%26%26%20window._content.getSelection%28%29.containsNode%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20for%20%28%20i%3D0%3B%20i%20%3C%20dll%3B%20++i%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28window._content.getSelection%28%29.containsNode%28dl%5Bi%5D%2C%20true%29%20%26%26%20linkIsSafe%28dl%5Bi%5D.href%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20++n_to_open%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20if%20%28%20n_to_open%20%26%26%20%28%20n_to_open%20%3C%3D%20warn_if_opening_more_than%20%7C%7C%20confirm%28%27%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%27%20+%20n_to_open%20+%20%27%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0445%20%u0441%u0441%u044B%u043B%u043E%u043A%20%u0432%20%u043D%u043E%u0432%u044B%u0445%20%u0432%u043A%u043B%u0430%u0434%u043A%u0430%u0445%3F%27%29%20%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20for%20%28%20i%3D0%3B%20i%3Cdll%3B%20++i%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20window._content.getSelection%28%29.containsNode%28dl%5Bi%5D%2C%20true%29%20%26%26%20linkIsSafe%28dl%5Bi%5D.href%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20browser.addTab%28dl%5Bi%5D.href%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%0Aif%20%28%20%21n_to_open%29%20%7B%20%0A%20%20%20%20%20for%20%28%20i%20%3D%200%3B%20i%20%3C%20dll%3B%20++i%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20linkIsSafe%28dl%5Bi%5D.href%29%20%29%20++n_to_open%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20if%20%28%20%21n_to_open%29%20alert%20%28%27no%20links%27%20%29%0A%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20confirm%28%27%u041D%u0435%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0445%20%u0441%u0441%u044B%u043B%u043E%u043A.%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%u0441%u0435%20%27%20+%20n_to_open%20+%20%27%20%u0441%u0441%u044B%u043B%u043A%u0438%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u0432%20%u043D%u043E%u0432%u044B%u0445%20%u0432%u043A%u043B%u0430%u0434%u043A%u0430%u0445%3F%27%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20%28%20i%20%3D%200%3B%20i%20%3C%20dll%3B%20++i%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20linkIsSafe%28dl%5Bi%5D.href%29%20%29%20%7B%20browser.addTab%28%20dl%5Bi%5D.href%20%29%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A%0A//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u0441%20%u043F%u043E%u0438%u0441%u043A%u043E%u0432%u0438%u043A%u0430%u043C%u0438%20................................................%0Afunction%20searchService%28%29%20%7B%0A%20%20%20%20%20return%20Components.classes%5B%22@mozilla.org/browser/search-service%3B1%22%5D.getService%28Components.interfaces.nsIBrowserSearchService%29%3B%0A%7D%0A%0Athis.selectEngine%20%3D%20function%28aNode%2C%20aEvent%29%20%7B%0A%20%20%20%20%20var%20engine%20%3D%20aEvent.target.engine%3B%0A%20%20%20%20%20var%20ss%20%3D%20searchService%28%29%3B%0A%20%20%20%20%20ss.currentEngine%20%3D%20ss.getEngineByName%28engine.name%29%3B%0A%20%20%20%20%20aNode.engine%20%3D%20engine%3B%0A%20%20%20%20%20aNode.image%20%3D%20aEvent.target.getAttribute%28%22src%22%29%3B%0A%7D%0A%0Athis.populateMenu%20%3D%20function%28aNode%29%20%7B%0A%20%20%20%20%20var%20ss%20%3D%20searchService%28%29%3B%0A%20%20%20%20%20var%20engines%20%3D%20ss.getVisibleEngines%28%7B%20%7D%29%3B%0A%20%20%20%20%20const%20kXULNS%20%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3B%0A%0A%20%20%20%20%20while%28%20aNode.firstChild%20%26%26%20aNode.firstChild.localName%20%21%3D%20%22menuseparator%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20aNode.removeChild%28%20aNode.firstChild%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20for%20%28%20var%20i%20%3D%20engines.length%20-%201%3B%20i%20%3E%3D%200%3B%20i--%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20var%20mi%20%3D%20document.createElementNS%28kXULNS%2C%20%22menuitem%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20mi.id%20%3D%20%22cb-search-%22%20+%20engines%5Bi%5D.name%3B%0A%20%20%20%20%20%20%20%20%20%20%20mi.className%20%3D%20%22menuitem-iconic%20searchbar-engine-menuitem%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20mi.setAttribute%28%22label%22%2C%20engines%5Bi%5D.name%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20engines%5Bi%5D.iconURI%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mi.setAttribute%28%22src%22%2C%20engines%5Bi%5D.iconURI.spec%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mi.engine%20%3D%20engines%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20mi.engine%20%3D%3D%20ss.currentEngine%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mi.style.fontWeight%20%3D%20%22bold%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mi.setAttribute%28%22onclick%22%2C%20%20%22event.preventDefault%28%29%3B%20event.stopPropagation%28%29%3B%20parentNode.parentNode.selectEngine%28parentNode.parentNode%2C%20event%29%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20aNode.insertBefore%28mi%2C%20aNode.firstChild%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%0A%0Athis.currentEngine%20%3D%20searchService%28%29.currentEngine%3B%0Avar%20ss%20%3D%20searchService%28%29%3B%0Athis.engine%20%3D%20ss.currentEngine%3B%0Athis.image%20%3D%20this.engine.iconURI.spec%3B%0A%0Avar%20mp%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Amp.setAttribute%28%22onpopupshowing%22%2C%20%22parentNode.populateMenu%28this%29%22%29%3B%0Amp.setAttribute%28%22oncommand%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%0Avar%20managerSeparator%20%3D%20mp.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0AmanagerSeparator.id%20%3D%20%22cb-searchbutton-separator%22%0Avar%20managerItem%20%3D%20mp.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0AmanagerItem.setAttribute%28%22label%22%2C%20%22Manage%20Search%20Engines...%22%29%3B%0AmanagerItem.setAttribute%28%22oncommand%22%2C%20%22openDialog%28%27chrome%3A//browser/content/search/engineManager.xul%27%2C%20%22%20+%20%22%27engineManager%27%2C%20%27chrome%2C%20dialog%3Dno%27%29%22%29%3B%0Athis.type%20%3D%20%22menu-button%22%3B%0A%0A%0A%0A/*%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u0434%u0430%u0441%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0433%u043E%20%u043F%u043E%u043B%u044F%2C%20%0A%20%20%20%u0438%u043B%u0438%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%u0435%u0441%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0435%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%u0442%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043E%u0442%u0434%u0430%u0441%u0442%20%27false%27%20..................%20*/%0Afunction%20getSelect%28%29%20%7B%0A%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20....%0A%20%20var%20selection%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29.toString%28%29%3B%0A%0A%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0433%u043E%20%u043F%u043E%u043B%u044F%20....%0A%20%20if%20%28%20selection%20%3D%3D%20%27%27%20%29%20%7B%0A%20%20%20%20%20%20%20var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20%20%20%20if%20%28%20theBox%20%26%26%20%28theBox.type%20%3D%3D%20%22text%22%20%7C%7C%20theBox.type%20%3D%3D%20%22textarea%22%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%20%20%20%20var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%20%20%20%20var%20selection%20%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%0A%20%20//%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20....%0A%20%20if%20%28%20selection%20%3D%3D%20%27%27%20%29%20var%20selection%20%3D%20gClipboard.read%28%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20//%20%u0443%u0431%u0438%u0440%u0430%u0435%u043C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0441%20%u043E%u0431%u043E%u0438%u0445%20%u043A%u043E%u043D%u0446%u043E%u0432%20%u0442%u0435%u043A%u0441%u0442%u0430%20....%0A%20%20if%20%28%20selection%20%21%3D%3D%20%27%27%20%29%20var%20selection%20%3D%20selection.toString%28%29.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%22%22%29%3B%0A%20%20%0A%20%20if%20%28%20selection%20%3D%3D%20%27%27%29%20%7B%20%0A%20%20%20%20%20%20%20var%20str%20%3D%20%22%u0412%u044B%u0434%u0435%u043B%u0438%u0442%u0435%20%u0438%u043B%u0438%20%u0441%u043A%u043E%u043F%u0438%u0440%u0443%u0439%u0442%u0435%20%u0442%u0435%u043A%u0441%u0442%21%22%0A%20%20%20%20%20%20%20alertsService.showAlertNotification%28_this.image%2C%20_this.label%2C%20str%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%0A%20%20return%20%28%20selection%20%3D%3D%20%27%27%29%3F%20false%3A%20selection%3B%0A%7D%3B%0A%0A%0A%0Athis.tooltipText%20%3D%20%22Search%20and%20open%20%5Cn%u041B%3A%20%u0418%u0441%u043A%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430/%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%5Cn%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%u0441%u0435%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0435%20%u0441%u0441%u044B%u043B%u043A%u0438%20%5Cn%u041F%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430/%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%22%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%5Bnull%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Может кто знает как можно перенести кнопку в urlbar, расширения типа url-addon-bar это как-то делают, но не хочется устанавливать лишнее.
Пример переносит кнопку раширения noscript из панели дополнений в urlbar.
var urlbar = document.getElementById("urlbar-icons"); var noscript = document.getElementById("noscript-tbb"); urlbar.insertBefore(noscript, urlbar.lastChild);
Добавлено 09-01-2013 21:58:57
bunda1
A simple script that removes upper bar from translated sites by Google Translator (e.g. runned by Google search or translating bookmarklet)
Google Translator without upper bar for Greasemonkey
Вот спасибо, я не знал что такой скрипт есть.
Спасибо okkamas_knife, Pony_Smile_Pack и Dumby. Вопрос снимается.
Хотя удалять лучше через Css.
Отредактировано bunda1 (09-01-2013 21:58:57)
Отсутствует
Обнаружены глюки СВ в СМ 2.15
А если custombuttons-0.0.5.6pre3-20111120 ?
Отсутствует
bunda1
Я немного не понял что ты просишь но пробуй это:
Да, в этой кнопке открывает в активных вкладках, а не в фоновых, но пропал самый нужный мне пункт, поиск из адресной строки, остальные пункты мне и не нужны, потому как привык делать это другими средствами. Использовал Search and open +4 исключительно как замену панели поиска, типа расширения Omnibar. Мне нужна кнопка с поисковиками ищущая набранный в ручную текст из адресной строки, и больше ничего. Код на перемещение кнопки в urlbar сработал, спасибо.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует