lmiol пишет: за настройки няшное спасямб ) а вот прокси открывается в новой вкладке а не отдельном окошке Proxy
нене я писал что там по ссылке открывается в вкладке, а нужно чтобы в окошке сразу без вкладок.
кстати в этом скрипте (это другой не тот что ты линковал) довольно интересная задумка но там, нужно переделать чтобы левой кнопкой открывалось окошко с прокси настройками средней переключать так как у него сделано на левую а на правую сделать чтобы открывалось стандартное меню файерфокса (т.е. то стандартное меню с пунктами где написано Панель меню Панель навигации Панель Закладок. и Настройки, а редактирование данной кнопки сделать СTRL+SHIFT+ALT+Правая) или забить на него и тот что сделал ты сделать так чтобы на левую просто открывались прокси настройки, а на правую открывалось стандартное меню файерфокса, , а редактирование данной кнопки сделать СTRL+SHIFT+ALT+Правая)
и получится что как будто кнопка стандартная
но проблема уже в другом началась, в моей portable версии фф 3.6.25 не хот ят сохраняться позиции того что я изменил ( а именно, я добавил кнопки перезахажу в фф их нет, я убрал адресную строку для ввода ссылки с панели навигации и убрал кнопку обновить и после перезахода в фф они снова на месте, вообщем ничего не хочет сохраняться)
Добавлено 10-10-2013 00:42:11
решил проблему переместив все стандартные кнопки на панель закладок они сохранились, но вот новые сделанные через custom buttons не сохраняются
печалька
Добавлено 10-10-2013 00:47:50
http://forum.mozilla-russia.org/viewtopic.php?pid=484057
читал эту страничку у человека похожая трабла
Отредактировано lmiol (10-10-2013 00:47:50)
Отсутствует
и можно было бы какимто образом через about:config или еще каким-нитиь лишиться вот этой кнопки http://img96.imageshack.us/img96/1556/5xil.png добавляющей закладку из адресной строки
ведь в данном случае закладок не будет вообще никаких.
Отредактировано lmiol (10-10-2013 01:08:32)
Отсутствует
bunda1
а вот это можете подправить?
["Поиск по текущему сайту", function(){var getSel=function(w){var s,d=w.document;if(d.selection){var r=d.selection.createRange();s=r?r.text:''}else{s=d.getSelection().toString();if(!s){var e,t=d.getElementsByTagName('textarea'),u=d.getElementsByTagName('input'),i=t.length;while(e=(i>0)?t[--i]:u[-i--])try{if(e.offsetHeight>0&&(s=e.value.substring(e.selectionStart,e.selectionEnd)))break}catch(x){}}};if(!s)for(var j=0,f;f=w.frames[j];j++){try{if(s=getSel(f))break}catch(x){}};return s};var w=window,s=w.prompt('Поиск на этом сайте с помощью Google',getSel(w));if(s){w.open('http://www.google.com/search?as_q='+encodeURIComponent(s)+'&as_sitesearch='+w.location.hostname)}}],
Отредактировано Kiril__777 (10-10-2013 15:46:11)
Отсутствует
А можно сделать кнопку, которая автоматически бы удаляла "Описание" - "Description", при добавлении закладок?
Лучше для этого использовать CSS код: Уроки стилистики (CSS) | Форум Mozilla Россия
Отсутствует
Какой код должен быть если я хочу чтобы правый клик + нажатый Контрол вызывали функцию?
Отсутствует
Какой код должен быть если я хочу чтобы правый клик + нажатый Контрол вызывали функцию?
this.onclick = function(e) { // действие при клике ПКМ .... if ( e.button == 2 && e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { e.preventDefault(); alert("1"); } };
Отсутствует
bunda1
а вот это можете подправить?
И как добавить разделители в этом меню? прошлый вариант не работает :с
// Добавить новый пункт "Искать страницу" в меню kнопки "Firefox", от 10.10.2013. ................................ (function () { var img = "data:image/x-icon;base64,AAABAAEAEhAAAAEAGADoAwAAFgAAACgAAAASAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx9vm0y9y40OC50OG40OG40OG40OG40OG40OG40d68z+yuz8a34qYAAAAAAAAAAAAAAAAEkQAAANLl9Dya11Oo2Eqg0kyh00uh0kqg0kyf0kqgzkqYzz2MrRexIxfFA6PhpQAAAAAAAAAAAASRAAAA1Of4Sq3rXKLUYqjeYajeY6vgZq7kYqrcYaHYSoasI7wsMPMqLu8yHdUdrOCqAAAAAAAABJEAAADU5/dGp+VireB4xfx2xPpyvvNprt5ss+pgpcsmwjct8iYz7DU17DM58zcl2SSu464AAAAEkQAAANTo+Eio5mOr33XA93bE+WWs3HOu0V6jyS6+PWvwXHPvdUDuQDfuNWryaXXwdDLOM7DnsQSRAAAA1Oj4RqfmZK3gesj8dsX4d8f5e8n7arncPbNzKKNMZdtiX/dfR/FDl/KWWMNYe9R7v+u/BJEAAADW5/hFqOZ0uuKc3PiU1/aU2PaV1/SU1fGZxv9aop1a21d2+3Vg9WSW8peA04EAAAAAAAAEkQAAANTm9kuv63TD8Gy46W+76m666m+762286W+z5ziVh2fYXLr7ran2npXolm/ObgAAAAAAAASRAAAA1Ob3SaznWqPSXanZXanZXqvaYa3eYKzbXqbZUKW0R8JpPbZzRbp4a81oo+CjAAAAAAAABJEAAADV5/hGqOVmteOA1f990v980fx0xe91zfl/2f9/1/+d3Pxgt/Jsvv8AAAAAAAAAAAAAAAAEkQAAANTn90eq5WW14nzS/X3U/2q34XazzHvG73bP/XnS/ZLb9F225Wq+8QAAAAAAAAAAAAAAAASRAAAA0+f3SKrlZbfletX/edH/d9D9gtv+gdn/etT/edf/lN36W7foa772AAAAAAAAAAAAAAAABJEAAADW6PhEqOd/wOCk5PqX2/ea3viY3PeY3faZ3/ia3/ig2/Rctelsv/cAAAAAAAAAAAAAAAAEkQAAAM/k9kuv6nnE63O/7XPA7XPA7nTA7XXA7XO/7XTA7HK+7GnC8Ge79QAAAAAAAAAAAAAAAASRAAAA3u34ccDvoOb8n+P7oOT8oOT8oOT8oOT8oeT8n+T8pOf9jdn5jMn1AAAAAAAAAAAAAAAABJEAAAAAAADB4vtRtvRbv/dZvvZZvvZavvdavvZavvZcwPZXvfZ3w/YAAAAAAAAAAAAAAAAAAAAEkYADwEGAAcBBgADAQYAAQEGAAABBgAAAQYAAwEGAAMBBgADAQYADwEGAA8BBgAPAQYADwEGAA8BBgAPAQcAHwEE="; var menu = document.createElement("menu"); menu.setAttribute("label", "Искать страницу"); menu.setAttribute("class", "menu-iconic"); menu.setAttribute("image", img ); menu.onmouseout = function() { menu.removeAttribute('_moz-menuactive') }; var array = [ ["в кэше Google", function() gBrowser.selectedTab = gBrowser.addTab('http://www.google.com/search?q=cache:' + content.location) ], ["на Archive.org", function() gBrowser.selectedTab = gBrowser.addTab('http://web.archive.org/web/' + content.location) ], ["separator"], ["Поиск по текущему сайту", function(){var text = document.commandDispatcher.focusedWindow.getSelection().toString();if ( text == ''){ var theBox = document.commandDispatcher.focusedElement; if ( theBox && (theBox.type =="text" || theBox.type == "textarea") ) { var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var text = theBox.value.substring(startPos, endPos); } }; if ( text !== '' ) var text = text.toString().replace(/^\s+|\s+$/g,""); if ( text == '' ) { var value = custombuttons.promptBox('Поиск по сайту в Google', 'Bведите текст ....'); var text = value[0] ? value[1] : ''; }if ( text == '' ) return; var text = escape( convertFromUnicode("UTF-8", text) ); var url = content.document.domain; var url = encodeURIComponent( url ); var url = "http://www.google.com/search?as_q=" + text + "&as_sitesearch=" + url; gBrowser.selectedTab = gBrowser.addTab( url ); }], ]; var menuPopup = document.createElement("menupopup"); menuPopup.onmouseover = function() { menu.setAttribute('_moz-menuactive', 'true') }; array.forEach(function( m ) { if ( m[0] == "separator" ) { menuPopup.appendChild( document.createElement("menuseparator") ); return }; var menuItem = document.createElement("menuitem"); menuItem.setAttribute("label", m[0] ); menuItem.addEventListener("command", m[1] ); menuPopup.appendChild( menuItem ); }); menu.appendChild( menuPopup ); var appMenu = document.getElementById("appmenuSecondaryPane"); var appHelp = document.getElementById("appmenu_help"); appMenu.insertBefore( menu, appHelp ); appMenu.insertBefore( document.createElement("menuseparator"), appHelp ); addDestructor(function() { appMenu.removeChild( menu.nextSibling ); appMenu.removeChild( menu ); }); })();
Отсутствует
bunda1 пишет:
Выделить кодКод:
this.onclick = function(e) { // действие при клике ПКМ .... if ( e.button == 2 && e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { e.preventDefault(); alert("1"); } };
А зачем это: && !e.shiftKey && !e.altKey && !e.metaKey?
Почему не достаточно просто e.button == 2 && e.ctrlKey?
Отредактировано Ferguss114 (10-10-2013 23:30:48)
Отсутствует
bunda1
Спасибо!
Отсутствует
а не подскажите как правильно вписать контекстное меню панелей навигации и прочего (вроде это toolbar-context-menu или вот скрин http://img801.imageshack.us/img801/3706/f83q.png )
на правую кнопку
просмотрел все готовые кнопки но так и не нашел везде стандартное меню кнопки (т.е. меню от этого аддона для редактироания кнопки ипрочего)
видимо это надо имитировать и писать вручную такие строчки да?
Отредактировано lmiol (11-10-2013 18:50:02)
Отсутствует
bunda1
Спасибо!
Отсутствует
а не подскажите как правильно вписать контекстное меню панелей навигации ...
В вкладку код:
if ( !this.lastChild ) { var cloneMenu = document.getElementById("toolbar-context-menu").cloneNode( true ); this.appendChild( cloneMenu ); }; this.lastChild.showPopup ( this, -1, -1, "popup", "bottomleft", "topleft" );
Отредактировано bunda1 (11-10-2013 19:30:34)
Отсутствует
if ( !this.lastChild ) { var cloneMenu = document.getElementById("toolbar-context-menu").cloneNode( true ); this.appendChild( cloneMenu ); }; this.lastChild.showPopup ( this, -1, -1, "popup", "bottomleft", "topleft" );
спс
правда не совсем разобрался
если добавляю в код - то открывается на CTRL+ЛКМ (а должна просто на правую)
если в навигацию под баттон 2 то http://img818.imageshack.us/img818/1280/42az.png
this.onclick = function(event) {
if(event.button == 1){
var curstate=custombuttons.getPrefs(this.pref);
if (curstate==0){custombuttons.setPrefs(this.pref,1);}
if (curstate==1){custombuttons.setPrefs(this.pref,2);}
if (curstate==2){custombuttons.setPrefs(this.pref,4);}
if (curstate==4){custombuttons.setPrefs(this.pref,5);}
if (curstate==5){custombuttons.setPrefs(this.pref,0);}
}
else if(event.button == 2) {
gShowPopup(this);
}
if(event.button == 0 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
event.preventDefault();
cbu.getPrefs("Proxy.connectionsInTab") ? openConnectionsInTab(): openConnections();
event.stopPropagation();
}};
// Функция открывает настройки прокси в окне ...............................................................
function openConnections() {
var win = openDialog("chrome://browser/content/preferences/connection.xul", "", "centerscreen, resizable=no");
win.addEventListener("load", function(e) {
this.removeEventListener("load", arguments.callee, true); // удалить обработчик
e.target.documentElement.setAttribute("type", "prefwindow");
}, true);
// обработчик закрывает настройки прокси по клику на странице ....
gBrowser.addEventListener("click", function() {
this.removeEventListener("click", arguments.callee, true);
try { win.close() } catch(e) {}; // закрыть окно
}, true);
};
Отредактировано lmiol (12-10-2013 03:32:20)
Отсутствует
правда не совсем разобрался
если добавляю в код - то открывается на CTRL+ЛКМ (а должна просто на правую)
this.pref = 'network.proxy.type'; this.setState = function() { var state = cbu.getPrefs( this.pref ); if ( state==0 ) { this.image = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAADJ0lEQVQ4T1WTaUiUURSG7+comi0/+pWFSQu0mXsuk+mMoo5LamSSFUYgSbSQZEWFhhGkA1Y6bZYRtIBUQiUVWVSY2oil5owLCM7iNmNOk/OvVN7OuZTQB5dv5rv3fc457zlXmZiYEP8eRVHEAl9f8WvmV7NK5RPgmPwuZn7PCG8f74klixcFLPT3z5+bmxuYnZ1VvOgBMCfGx8e9RkdHFQIpHs9Pv4cNj/GxtQ0WqwUJWTuwbGM4gkKicbKsAs+bXsHpdKomJycFafxIq/APlcPhUFwul19ldQ3Uumy0GI2ouKTH8uBI5B8oxrEz5VgRHIWIxDTorxowNjbmRRCF3kKQWPCf2tv10O3cg26TGZQJXr99B33tNXR+7QJlh4KiQwhLSscmtQZVl2v5W6DTSeW73S6lpf0zguO02Fd8FN96zSAoXK7vmJ6ehtvtxrBlGFm79iKCANFJGQjZliLLmZqaEsJmtx2pqKqmj8lYHRGHasMNKfR4XHJZLBbk7S/CupgERGl0ErAhToOS02UMNohvJnNzbNp2xKRmSbOqagwk9OBw6Vkk5ebjDZWyPjYRUdp0hGt1MostBAneqqVse03C3NfXFJqYKg3ijTWRajx99gIlZ84jYFMEwjRpiKTILJwHEGxt1FZ86epuEz29prb/6LQZGBqNxqaXOHj8JLQ5eeAAIQkpsgQG8Xkuo7un18oZNGYXFM7T+UBMSqZsodVqlT6UVVYilkrcqNZKMWekyd4Jk9ls4zkwXdRXSyIbJCPQATb1yvVboH0Jud/QgDTqBIsZdOJcORv8gNvobezoQHxGjuzzlr9mcaSgkBgMDA5SS10w9w8gZ3chQsnI6ORMNL//wK1eyRkIHs9HTxoRRv2VEMokMkknow0NDcm5MNTdQSB1iY28UX8PDqdT4SsgbDZZhkIQX74H8Rm5shw+yGXQPvoGBrGZ2sY+1N27z1O4isfYbrerSGxnCM31iEKRvIwdRrAn/4xl8c07d3Gq/AI+tbaDLx+JFdYQYDNT5OJMRkZG+FL50Lu0r7/f1N3To6dp6yS3G212e8OPH1NLOTJd4/n1BxoVaY65Y3qrAAAAAElFTkSuQmCC'; this.checked = false; this.tooltipText = "Параметры соединения\nБез прокси"; return; } if ( state==1 ) { this.image ='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAADAklEQVQ4T1VTS0wTURSdaSFIIi5cscEE4kYFQUSEFqSFSAtoqRo0BmIUJX74SAFxgWgwuoAEY0riyshCCCg0BKouWKhRsa0QKW1hSe1MB1q0FFrKry3Xdx+2iZO8zPvcc969557HMv8+juPEIpFoJz4+LsnnW3u6FgicCoV2ILwTFmJjxPsSEvZ+TklOqY/Eu1wucWJiYphZWFgQOZ1OFg9cbjc7/vETNLc9BJnqAhzKlcHBLCmkSuWgud8Oo/oPsLi4mLS0tMQSzB6CZRkyERM2lhwkv3jZC9lFZXBYIofjMiVkyUvgBI7CUkp2NP80dD7TgiAIIiSJZMPgQq/XBzNkCkiXKym4ulYD29vbsLm5CTWN9yCbkOA4IpFB1/Memgkl8Ho97JfvBkjNlcMxAm5ufwzV9U3w1WCEYDAI4XAYJkw/4HpDM2jaHlESzATLoQQOzlHX0dlNNoug8mYdBAIBejOCfT4/+P1rlAT3NjY24OrtBloOajJvn+9hZqy28RzFWThZfAZe9Q1AKBSiAN3YO8grOw+SEjUMjeopAZ4N6EaoJijsjMViZWyzs/r0gmLILFBAvlINDo6nWZRcrKIloS5F5y6B17sCvNMJUkKIwmJ3pn5OTzBmi3UC1cbgHIUKON5JCZQVlXQPh0xVASurq8ALAkhL1bQ7WMa02fILM9CpLl+hgb39g9EShsfeg0RZTknfjIxF9weGR2iX0CdWm82BPrA+6eqmjFU1tfR2rHVrawtWfT56M2qCoq6vr8O1O3epT9Bsdrv9NbYxxmgyQV5pOfVAK2ljjaYVvhlMlAiBhskpuNHYAk0POmgMmg0d6/H8PkBb6Xa7xf1DOsgg/c0o3HVe1a36aCbogYge+EfHou0jTwDLYAlJXN/gW5KJmpaDgZmELDLSSNtySKvRsWh7vBgf4K6ZHA5WEHiWvAmR0WQE1CQiLBLhXKvV+onlgXwkVmARQwjSou8BJzzPsx6PJ5b8W2bn5qzTZnMXcdskUVvn4LjB5eU/+/8DkMVfsY1mV5YrTCYAAAAASUVORK5CYII='; this.checked = true; var pxadr = cbu.getPrefs("network.proxy.http"); var pxprt = cbu.getPrefs("network.proxy.http_port"); this.tooltipText = "Параметры соединения\nРучная настройка, текущий прокси: "+ pxadr + ":" + pxprt; return; } if ( state==2 ) { this.image ='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACBElEQVQ4T41TTUtbQRSdZ4xpRKVIti2YXTYlIk3sYELeotBVN/6NutKdUOiiCwWlVOiq0IUtiJKFEVwkoFJIm6TafLzEpTGfG30JGN2UxOmcgRueQxcNXPLmzr3nnjlzxmDyx3nI3e32BqlUSni9nic3N7fvb+/uov3+vRjcD1ruUdfU5OTEiX/Gv4T6cHjOEIK5c7mzP6o5Ell4ZJovRmIx/jh5dCyWV9+qeLe2IWbNVyL2elGt9w8OBdVxzo1g8JmLBQKBESRlqGY0IL7/+CmCkZfDNXJYr21+VCCmyb2ch8cUHZpM0zLZrJpIYPr/+octgIz7fD7Gul3bwGSgg2qv1xkGQJDTAcAOx4EerFavvUGCQgcAG+xBD9KFvi+qF1usaJWTJBYdASDOyWDXbrceMEOuWCpZrFypHOgUAaDnMJ3YkT6nv/NpVihZ6f8BIBZophvKF0qXYBDXhQJdZw7fzhzWALHK5RprNpuWUwOwqVarii4ExJ4OiBrsybptXOMoFZIDnTeBZv2IOA6u3ravng6d+G0vrqYhAEgM/mWmT5+/SCNpToQ9v+7sPphGoASCyYlEog8XDp0YCs2N4WEAEclMNqNYkIhgQ9aWzWoy6qLRqDE//9yl3IhXhYcBb9u27W40GiuV83MrXyisS7f9kmrHa/X6TqdzPU11stkjj2n8BTQjJ/nBnlUOAAAAAElFTkSuQmCC'; this.checked = true; var pxcnf = cbu.getPrefs("network.proxy.autoconfig_url") this.tooltipText = "Параметры соединения\nАвтонастройка с URL:" + pxcnf; return; } if ( state==4 ) { this.image = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAAC4klEQVQ4T21TW0iTYRjevykmZBddeWOgdGNpmpp5SN0UD1NTSzACk4S6ywsxiDDNMLWJp6Z5wNQLFUQZGMMDGlaW6TJyblOiyLm56aZNwcNV6tP3fjXR8oeXff/+73m+932e5xNEfx+z2SwRi8X77u5uXpub22XbOzvRu7v72Nvfs7q6SE55eJx86+Ptk+fcb7PZJJ6ennui5eVlscViEeiDzW4XRsbeoKCwGNK0TPiGS3E2JBJ+kTLkPyjCK/UgVlZWvFZXVwWGOcGwgogtJIxNYB+8G192IDQuBeciZAiWJiFEJsclqthkTnYhKh6KGiWsVquYSJzdiOhFrVb/uihLQgArJzgoVg5nhTISqvMRUlTW1fNOOMHGhkMY/zgJv3AZiODfCmYk5bV1GBwdRVN7B6QpmbwTGocTmMyme08U1ezPuGMJGlrbUNXQiEdlz/CY1dDICHzDYrgmC8aFetGs3jASlngVlxNSjyV4P/EBypZWbG2uY2z8HXpUKqRk3eLCzup0epFhbk4dEJOAoJhELtbhEYorFEwwMwqKSmCxmFDT2Az18BCi5de4O5+/zEyItDr9BKlNwMzbd7nqUanXoXheD7vNyk+e/KRBESPr6+9HWU0dd4dcmdHqFqkDVdrNHE5Am799/wrj4g/UNbfgYWk5NjbW+OkliiokZWVzMLlEOdEbDCbKgf5pZTVnrH3RhKlpDSeiItWHX48iLTv3YDQCU04obEajsZNsdJnSaHAlOR2BzLL4jBvoHxhAYWkFcvPy0dbZdUQXygmFjRLrcKyd4Vba7XZJd58KgcxfIsnMuYPu3l60M3CEPP0/dyixFHvnFaAxBEbi1tXTyzrJ4OOQJoeT6M9sC2NWU2Ip9nQwXcA/YTKZBKt1SWB3QjylmQJp4hSWiGitVCq3WOTBHrbXKhCGEfgf3AdaLC0tCQ6Hw5X93p+bn9fPaLWVLG3TTG2VyWzuWV//efoIgL38Bkt7NIZJ0esyAAAAAElFTkSuQmCC'; this.checked = true; this.tooltipText = "Параметры соединения\nАвтоматическое определение прокси для этой сети"; return; } if ( state==5 ) { this.image = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACq0lEQVQ4T41TX0hTYRS/d1NMaD34tBcDpZdCmy0tbZmbktNVUzCIivSh3qoH20hS+zNIQsGwCb0o9FCBFSvkktbIPwTmZpHzbndvc93N6zbrKvjnKfV0zlczJAgvHPZ93873+875/X6HX1lZ5HS6HC4Wi2k1Gs1mdnZW7vLyasfq2tqJ9fVN2NjcUDIztHt0ut3j+Xn517k/XzKZ1Or1+g2OAObm5ng6T6ZSvHd0DBxtd8Bsb4D9ZWbYV2yCApMFmltuw6AwBIlEIndhYYHHO7vm5+d5uqxFNB7/yHvc/wSOVJ2CA8cscNhcA8WWWiihqLQxsIPlJ6HzoRsURdEQSLoajjaCIPwsqaqFqy3tcKPtHoYLmtv/hhPXDjwrt9VDV08vq4QBLC2p/MdPk1BQZgFh2AtTU1Pbwu/3b+0jkQjLoUqoHQYgx+Rrrs5uPKyCdyPjgJz8N95jDrVDnMxGZ3u5mWDIW2o9A0erT+8IYHhkjHFCxM6IYpALSZJgqKgGY4V1RwBUJRFL6nz5Oj3BBcTgBLF9yFKzI4ChD6NMHWpjOiB+owo89vONDODF60Egoiii0SigxCxkWQZJkkAURZZDEpNPgqGQTD4I3u/qZoglZivUXWiCs5cuQ+tdF6C8EA6H4Y3wFhqarrAwWe3MJ2Q2fOQpyZjhQ6mO2+rAgFUUI7qxshbOXWyEnp5H4HA4wdXxAIzmaijCByiHzEaOVdXve5mUqVRK+/yVB4pQXwMm3bzV+o+Uff19SJ6VtUqOJdunR4DNAoJkPRt4iZXUs3YokSpJRyHKVopSk2PJ9vQwDeBvM8kyryhxHmdC4/P7gDhJE0tAtHa73SvECX6Yq/B0BwEKt+aBFvF4nFdVNRN/nVI4HJwOBLrQbZ+RbY8ciw0sLv7I2XYBN78Ai4uCXaMrRkkAAAAASUVORK5CYII='; this.checked = true; this.tooltipText = "Параметры соединения\nСистемные настройки прокси"; } } this.PS = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch); this.ob = {}; this.ob.observe = this.setState.bind(this); this.PS.addObserver( this.pref, this.ob, false); this.setState(); // Настройка функций кликов мыши для кнопки ................................ this.onclick = function(e) { // действие при клике ЛКМ .... if ( e.button == 0 ) { openConnections(); }; // действие при клике СКМ .... if ( e.button == 1 ) { var curstate = cbu.getPrefs(this.pref); if (curstate==0) cbu.setPrefs(this.pref,1); if (curstate==1) cbu.setPrefs(this.pref,2); if (curstate==2) cbu.setPrefs(this.pref,4); if (curstate==4) cbu.setPrefs(this.pref,5); if (curstate==5) cbu.setPrefs(this.pref,0); }; // действие при клике ПКМ .... if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { e.preventDefault(); if ( !this.lastChild ) { var cloneMenu = document.getElementById("toolbar-context-menu").cloneNode( true ); this.appendChild( cloneMenu ); }; this.lastChild.showPopup ( this, -1, -1, "popup", "bottomleft", "topleft" ); } }; // Функция открывает настройки прокси в окне ............................................................... function openConnections() { var win = openDialog("chrome://browser/content/preferences/connection.xul", "", "centerscreen, resizable=no"); win.addEventListener("load", function(e) { this.removeEventListener("load", arguments.callee, true); // удалить обработчик e.target.documentElement.setAttribute("type", "prefwindow"); }, true); // обработчик закрывает настройки прокси по клику на странице .... gBrowser.addEventListener("click", function() { this.removeEventListener("click", arguments.callee, true); try { win.close() } catch(e) {}; // закрыть окно }, true); };
Отсутствует
Есть вот такой скрипт для дополнения userChromeJS, добавляет в диалог сохранения дополнительные кнопки и поля. Может кто найдется переделать в кнопку? У меня не получается, просто наверно мало знаний, а так получилась бы очень хорошая кнопка.
// @homepageURL https://github.com/ywzhaiqi/userChromeJS/blob/master/downloadPlus.uc.js // ==/UserScript== (function() { let { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; if (!window.Services) Cu.import("resource://gre/modules/Services.jsm"); var ns = { get appVersion() Services.appinfo.version.split(".")[0], get mainwin() Services.wm.getMostRecentWindow("navigator:browser"), init: function(){ switch(location.href){ case "chrome://mozapps/content/downloads/unknownContentType.xul": ns.download_dialog_changeName(); ns.download_dialog_saveAs(); ns.download_dialog_showCompleteURL(); ns.saveAndOpen(); break; } }, saveAndOpen: function(){ let acceptBtn = document.documentElement.getButton("accept"); let saveBtn = $("save"); var saveAndOpen = document.getAnonymousElementByAttribute(document.querySelector("*"), "dlgtype", "extra2"); saveAndOpen.parentNode.insertBefore(saveAndOpen, acceptBtn.nextSibling.nextSibling); saveAndOpen.setAttribute("hidden", "false"); saveAndOpen.setAttribute("label", "Сохранить и открыть"); saveAndOpen.addEventListener("command", function(event){ ns.mainwin.saveAndOpen.urls.push(dialog.mLauncher.source.asciiSpec); saveBtn.click(); acceptBtn.disabled = 0; acceptBtn.click() }, false); }, download_dialog_changeName: function () { if (location != "chrome://mozapps/content/downloads/unknownContentType.xul") return; let downLocation = $("location"); let locationText = $("locationtext"); $("mode").addEventListener("select", function() { if (dialog.dialogElement("save").selected) { if (!locationText) { locationText = downLocation.parentNode.insertBefore(document.createElement("textbox"), downLocation); locationText.id = "locationtext"; locationText.setAttribute("style", "margin-top:-2px;margin-bottom:-3px"); locationText.value = downLocation.value; } downLocation.hidden = true; locationText.hidden = false; } else { locationText.hidden = true; downLocation.hidden = false; } }, false) dialog.dialogElement("save").selected && dialog.dialogElement("save").click(); window.addEventListener("dialogaccept", function() { if ((locationText.value != downLocation.value) && dialog.dialogElement("save").selected) { if(ns.appVersion >= 23){ ns.mainwin.eval("(" + ns.mainwin.internalSave.toString() .replace("let ", "") .replace("var fpParams", "fileInfo.fileExt=null;fileInfo.fileName=aDefaultFileName;var fpParams") + ")") (dialog.mLauncher.source.asciiSpec, null, locationText.value, null, null, null, null, null, null, ns.mainwin.document, Services.prefs.getBoolPref("browser.download.useDownloadDir"), null); }else{ dialog.mLauncher.saveToDisk(dialog.promptForSaveToFile(dialog.mLauncher, window, locationText.value), 1); dialog.onCancel = null; } document.documentElement.removeAttribute("ondialogaccept"); } }, false); }, download_dialog_saveAs: function () { var saveas = document.documentElement.getButton("extra1"); saveas.setAttribute("hidden", "false"); saveas.setAttribute("label", "Сохранить как"); saveas.addEventListener("command", function(event){ let locationText = $("locationtext"); if(ns.appVersion >= 23){ ns.mainwin.eval("(" + ns.mainwin.internalSave.toString().replace("let ", "").replace("var fpParams", "fileInfo.fileExt=null;fileInfo.fileName=aDefaultFileName;var fpParams") + ")") (dialog.mLauncher.source.asciiSpec, null, (locationText ? locationText.value : dialog.mLauncher.suggestedFileName), null, null, null, null, null, null, ns.mainwin.document, 0, null); }else{ var file = (dialog.promptForSaveToFileAsync || dialog.promptForSaveToFile).call(dialog, dialog.mLauncher, window, dialog.mLauncher.suggestedFileName, "", true); if (file) { dialog.mLauncher.saveToDisk(file, 1); dialog.onCancel = function() {}; } } close(); }, false); }, download_dialog_showCompleteURL: function () { var s = $("source"); s.value = dialog.mLauncher.source.spec; s.setAttribute("crop", "center"); s.setAttribute("tooltiptext", dialog.mLauncher.source.spec); s.addEventListener("dblclick", function() { Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper) .copyString(dialog.mLauncher.source.spec) }, false); } }; ns.init(); function $(id, doc){ doc = doc || document; return doc.getElementById(id); } })();
Отредактировано Andrey_Krropotkin (12-10-2013 19:41:28)
Отсутствует
lmiol пишет: правда не совсем разобрался если добавляю в код - то открывается на CTRL+ЛКМ (а должна просто на правую)
скрытый текстthis.pref = 'network.proxy.type';this.setState = function() {
var state = cbu.getPrefs( this.pref );
if ( state==0 ) {
this.image = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAADJ0lEQVQ4T1WTaUiUURSG7+comi0/+pWFSQu0mXsuk+mMoo5LamSSFUYgSbSQZEWFhhGkA1Y6bZYRtIBUQiUVWVSY2oil5owLCM7iNmNOk/OvVN7OuZTQB5dv5rv3fc457zlXmZiYEP8eRVHEAl9f8WvmV7NK5RPgmPwuZn7PCG8f74klixcFLPT3z5+bmxuYnZ1VvOgBMCfGx8e9RkdHFQIpHs9Pv4cNj/GxtQ0WqwUJWTuwbGM4gkKicbKsAs+bXsHpdKomJycFafxIq/APlcPhUFwul19ldQ3Uumy0GI2ouKTH8uBI5B8oxrEz5VgRHIWIxDTorxowNjbmRRCF3kKQWPCf2tv10O3cg26TGZQJXr99B33tNXR+7QJlh4KiQwhLSscmtQZVl2v5W6DTSeW73S6lpf0zguO02Fd8FN96zSAoXK7vmJ6ehtvtxrBlGFm79iKCANFJGQjZliLLmZqaEsJmtx2pqKqmj8lYHRGHasMNKfR4XHJZLBbk7S/CupgERGl0ErAhToOS02UMNohvJnNzbNp2xKRmSbOqagwk9OBw6Vkk5ebjDZWyPjYRUdp0hGt1MostBAneqqVse03C3NfXFJqYKg3ijTWRajx99gIlZ84jYFMEwjRpiKTILJwHEGxt1FZ86epuEz29prb/6LQZGBqNxqaXOHj8JLQ5eeAAIQkpsgQG8Xkuo7un18oZNGYXFM7T+UBMSqZsodVqlT6UVVYilkrcqNZKMWekyd4Jk9ls4zkwXdRXSyIbJCPQATb1yvVboH0Jud/QgDTqBIsZdOJcORv8gNvobezoQHxGjuzzlr9mcaSgkBgMDA5SS10w9w8gZ3chQsnI6ORMNL//wK1eyRkIHs9HTxoRRv2VEMokMkknow0NDcm5MNTdQSB1iY28UX8PDqdT4SsgbDZZhkIQX74H8Rm5shw+yGXQPvoGBrGZ2sY+1N27z1O4isfYbrerSGxnCM31iEKRvIwdRrAn/4xl8c07d3Gq/AI+tbaDLx+JFdYQYDNT5OJMRkZG+FL50Lu0r7/f1N3To6dp6yS3G212e8OPH1NLOTJd4/n1BxoVaY65Y3qrAAAAAElFTkSuQmCC';
this.checked = false;
this.tooltipText = "Параметры соединения\nБез прокси";
return;
}
if ( state==1 ) {
this.image ='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAADAklEQVQ4T1VTS0wTURSdaSFIIi5cscEE4kYFQUSEFqSFSAtoqRo0BmIUJX74SAFxgWgwuoAEY0riyshCCCg0BKouWKhRsa0QKW1hSe1MB1q0FFrKry3Xdx+2iZO8zPvcc969557HMv8+juPEIpFoJz4+LsnnW3u6FgicCoV2ILwTFmJjxPsSEvZ+TklOqY/Eu1wucWJiYphZWFgQOZ1OFg9cbjc7/vETNLc9BJnqAhzKlcHBLCmkSuWgud8Oo/oPsLi4mLS0tMQSzB6CZRkyERM2lhwkv3jZC9lFZXBYIofjMiVkyUvgBI7CUkp2NP80dD7TgiAIIiSJZMPgQq/XBzNkCkiXKym4ulYD29vbsLm5CTWN9yCbkOA4IpFB1/Memgkl8Ho97JfvBkjNlcMxAm5ufwzV9U3w1WCEYDAI4XAYJkw/4HpDM2jaHlESzATLoQQOzlHX0dlNNoug8mYdBAIBejOCfT4/+P1rlAT3NjY24OrtBloOajJvn+9hZqy28RzFWThZfAZe9Q1AKBSiAN3YO8grOw+SEjUMjeopAZ4N6EaoJijsjMViZWyzs/r0gmLILFBAvlINDo6nWZRcrKIloS5F5y6B17sCvNMJUkKIwmJ3pn5OTzBmi3UC1cbgHIUKON5JCZQVlXQPh0xVASurq8ALAkhL1bQ7WMa02fILM9CpLl+hgb39g9EShsfeg0RZTknfjIxF9weGR2iX0CdWm82BPrA+6eqmjFU1tfR2rHVrawtWfT56M2qCoq6vr8O1O3epT9Bsdrv9NbYxxmgyQV5pOfVAK2ljjaYVvhlMlAiBhskpuNHYAk0POmgMmg0d6/H8PkBb6Xa7xf1DOsgg/c0o3HVe1a36aCbogYge+EfHou0jTwDLYAlJXN/gW5KJmpaDgZmELDLSSNtySKvRsWh7vBgf4K6ZHA5WEHiWvAmR0WQE1CQiLBLhXKvV+onlgXwkVmARQwjSou8BJzzPsx6PJ5b8W2bn5qzTZnMXcdskUVvn4LjB5eU/+/8DkMVfsY1mV5YrTCYAAAAASUVORK5CYII=';
this.checked = true;
var pxadr = cbu.getPrefs("network.proxy.http");
var pxprt = cbu.getPrefs("network.proxy.http_port");
this.tooltipText = "Параметры соединения\nРучная настройка, текущий прокси: "+ pxadr + ":" + pxprt;
return;
}
if ( state==2 ) {
this.image ='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACBElEQVQ4T41TTUtbQRSdZ4xpRKVIti2YXTYlIk3sYELeotBVN/6NutKdUOiiCwWlVOiq0IUtiJKFEVwkoFJIm6TafLzEpTGfG30JGN2UxOmcgRueQxcNXPLmzr3nnjlzxmDyx3nI3e32BqlUSni9nic3N7fvb+/uov3+vRjcD1ruUdfU5OTEiX/Gv4T6cHjOEIK5c7mzP6o5Ell4ZJovRmIx/jh5dCyWV9+qeLe2IWbNVyL2elGt9w8OBdVxzo1g8JmLBQKBESRlqGY0IL7/+CmCkZfDNXJYr21+VCCmyb2ch8cUHZpM0zLZrJpIYPr/+octgIz7fD7Gul3bwGSgg2qv1xkGQJDTAcAOx4EerFavvUGCQgcAG+xBD9KFvi+qF1usaJWTJBYdASDOyWDXbrceMEOuWCpZrFypHOgUAaDnMJ3YkT6nv/NpVihZ6f8BIBZophvKF0qXYBDXhQJdZw7fzhzWALHK5RprNpuWUwOwqVarii4ExJ4OiBrsybptXOMoFZIDnTeBZv2IOA6u3ravng6d+G0vrqYhAEgM/mWmT5+/SCNpToQ9v+7sPphGoASCyYlEog8XDp0YCs2N4WEAEclMNqNYkIhgQ9aWzWoy6qLRqDE//9yl3IhXhYcBb9u27W40GiuV83MrXyisS7f9kmrHa/X6TqdzPU11stkjj2n8BTQjJ/nBnlUOAAAAAElFTkSuQmCC';
this.checked = true;
var pxcnf = cbu.getPrefs("network.proxy.autoconfig_url")
this.tooltipText = "Параметры соединения\nАвтонастройка с URL:" + pxcnf;
return;
}
if ( state==4 ) {
this.image = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAAC4klEQVQ4T21TW0iTYRjevykmZBddeWOgdGNpmpp5SN0UD1NTSzACk4S6ywsxiDDNMLWJp6Z5wNQLFUQZGMMDGlaW6TJyblOiyLm56aZNwcNV6tP3fjXR8oeXff/+73m+932e5xNEfx+z2SwRi8X77u5uXpub22XbOzvRu7v72Nvfs7q6SE55eJx86+Ptk+fcb7PZJJ6ennui5eVlscViEeiDzW4XRsbeoKCwGNK0TPiGS3E2JBJ+kTLkPyjCK/UgVlZWvFZXVwWGOcGwgogtJIxNYB+8G192IDQuBeciZAiWJiFEJsclqthkTnYhKh6KGiWsVquYSJzdiOhFrVb/uihLQgArJzgoVg5nhTISqvMRUlTW1fNOOMHGhkMY/zgJv3AZiODfCmYk5bV1GBwdRVN7B6QpmbwTGocTmMyme08U1ezPuGMJGlrbUNXQiEdlz/CY1dDICHzDYrgmC8aFetGs3jASlngVlxNSjyV4P/EBypZWbG2uY2z8HXpUKqRk3eLCzup0epFhbk4dEJOAoJhELtbhEYorFEwwMwqKSmCxmFDT2Az18BCi5de4O5+/zEyItDr9BKlNwMzbd7nqUanXoXheD7vNyk+e/KRBESPr6+9HWU0dd4dcmdHqFqkDVdrNHE5Am799/wrj4g/UNbfgYWk5NjbW+OkliiokZWVzMLlEOdEbDCbKgf5pZTVnrH3RhKlpDSeiItWHX48iLTv3YDQCU04obEajsZNsdJnSaHAlOR2BzLL4jBvoHxhAYWkFcvPy0dbZdUQXygmFjRLrcKyd4Vba7XZJd58KgcxfIsnMuYPu3l60M3CEPP0/dyixFHvnFaAxBEbi1tXTyzrJ4OOQJoeT6M9sC2NWU2Ip9nQwXcA/YTKZBKt1SWB3QjylmQJp4hSWiGitVCq3WOTBHrbXKhCGEfgf3AdaLC0tCQ6Hw5X93p+bn9fPaLWVLG3TTG2VyWzuWV//efoIgL38Bkt7NIZJ0esyAAAAAElFTkSuQmCC';
this.checked = true;
this.tooltipText = "Параметры соединения\nАвтоматическое определение прокси для этой сети";
return;
}
if ( state==5 ) {
this.image = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACq0lEQVQ4T41TX0hTYRS/d1NMaD34tBcDpZdCmy0tbZmbktNVUzCIivSh3qoH20hS+zNIQsGwCb0o9FCBFSvkktbIPwTmZpHzbndvc93N6zbrKvjnKfV0zlczJAgvHPZ93873+875/X6HX1lZ5HS6HC4Wi2k1Gs1mdnZW7vLyasfq2tqJ9fVN2NjcUDIztHt0ut3j+Xn517k/XzKZ1Or1+g2OAObm5ng6T6ZSvHd0DBxtd8Bsb4D9ZWbYV2yCApMFmltuw6AwBIlEIndhYYHHO7vm5+d5uqxFNB7/yHvc/wSOVJ2CA8cscNhcA8WWWiihqLQxsIPlJ6HzoRsURdEQSLoajjaCIPwsqaqFqy3tcKPtHoYLmtv/hhPXDjwrt9VDV08vq4QBLC2p/MdPk1BQZgFh2AtTU1Pbwu/3b+0jkQjLoUqoHQYgx+Rrrs5uPKyCdyPjgJz8N95jDrVDnMxGZ3u5mWDIW2o9A0erT+8IYHhkjHFCxM6IYpALSZJgqKgGY4V1RwBUJRFL6nz5Oj3BBcTgBLF9yFKzI4ChD6NMHWpjOiB+owo89vONDODF60Egoiii0SigxCxkWQZJkkAURZZDEpNPgqGQTD4I3u/qZoglZivUXWiCs5cuQ+tdF6C8EA6H4Y3wFhqarrAwWe3MJ2Q2fOQpyZjhQ6mO2+rAgFUUI7qxshbOXWyEnp5H4HA4wdXxAIzmaijCByiHzEaOVdXve5mUqVRK+/yVB4pQXwMm3bzV+o+Uff19SJ6VtUqOJdunR4DNAoJkPRt4iZXUs3YokSpJRyHKVopSk2PJ9vQwDeBvM8kyryhxHmdC4/P7gDhJE0tAtHa73SvECX6Yq/B0BwEKt+aBFvF4nFdVNRN/nVI4HJwOBLrQbZ+RbY8ciw0sLv7I2XYBN78Ai4uCXaMrRkkAAAAASUVORK5CYII=';
this.checked = true;
this.tooltipText = "Параметры соединения\nСистемные настройки прокси";
}
}
this.PS = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
this.ob = {};
this.ob.observe = this.setState.bind(this);
this.PS.addObserver( this.pref, this.ob, false);
this.setState();// Настройка функций кликов мыши для кнопки ................................
this.onclick = function(e) {// действие при клике ЛКМ ....
if ( e.button == 0 ) {
openConnections();
};
// действие при клике СКМ ....
if ( e.button == 1 ) {
var curstate = cbu.getPrefs(this.pref);
if (curstate==0) cbu.setPrefs(this.pref,1);
if (curstate==1) cbu.setPrefs(this.pref,2);
if (curstate==2) cbu.setPrefs(this.pref,4);
if (curstate==4) cbu.setPrefs(this.pref,5);
if (curstate==5) cbu.setPrefs(this.pref,0);
};
// действие при клике ПКМ ....
if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) {
e.preventDefault();
if ( !this.lastChild ) { var cloneMenu = document.getElementById("toolbar-context-menu").cloneNode( true );
this.appendChild( cloneMenu ); };
this.lastChild.showPopup ( this, -1, -1, "popup", "bottomleft", "topleft" );
}
};// Функция открывает настройки прокси в окне ...............................................................
function openConnections() {
var win = openDialog("chrome://browser/content/preferences/connection.xul", "", "centerscreen, resizable=no");
win.addEventListener("load", function(e) {
this.removeEventListener("load", arguments.callee, true); // удалить обработчик
e.target.documentElement.setAttribute("type", "prefwindow");
}, true);
// обработчик закрывает настройки прокси по клику на странице ....
gBrowser.addEventListener("click", function() {
this.removeEventListener("click", arguments.callee, true);
try { win.close() } catch(e) {}; // закрыть окно
}, true);
};
отлично, только проблемка есть:
при правом клике открывается как и положено а вот при повторном клике открывается стандартное меню кастом баттонс (может както запихнуть стандартное меню на CTRL+SHIFT+ALT+средняя? )
Отредактировано lmiol (13-10-2013 02:33:59)
Отсутствует
отлично, только проблемка есть:
при правом клике открывается как и положено а вот при повторном клике открывается стандартное меню кастом баттонс (может както запихнуть стандартное меню на CTRL+SHIFT+ALT+средняя? )
Не на повторном клике а на двойном правом клике. Мне кажется так лучше чем нажимать CTRL+SHIFT+ALT+средняя !
Отсутствует
тот же дабл клик иногда может подвести изза внезапного лага и вместо одного действия вы получите другое.
В данном случае дабл клик открывает контекстное меню кнопки по умолчанию.
Отсутствует
Перестала работать связка расширений для сохранения изображений QuickDrag+Download sort. Хотелось бы заменить их на кнопку, от которой нужно:
1. При перемещении выделенного текста, искать его в новой вкладке, с помощью текущего поисковика.
2. При перемещении изображения, сохранять его в папку ~/Загрузки/DD.MM.YYYY (DD - текущий день, MM - текущий месяц, YYYY - текущий год).
Видел кнопку http://forum.mozilla-russia.org/viewtop … 34#p580134, но там поиск только в Google и изображения не сохраняются.
Браузер должен сам решать свои проблемы, а не возлагать их на пользователей. Minor
Отсутствует