Возможно ли это реализовать в виде пункта меню через кнопку?
спасибо
Отсутствует
Возможно ли это реализовать в виде пункта меню через кнопку?
спасибо
Отсутствует
bunda1
спасибо за наводку, сразу не нашел их.
Еще вопросец: все возможности этих кнопок возможно затолкать в меню? И как добавить в контекстное меню вкладки "Остановить все вкладки", помнится где-то об этом уже писали.
Спасибо.
Отсутствует
Еще вопросец: все возможности этих кнопок возможно затолкать в меню? И как добавить в контекстное меню вкладки "Остановить все вкладки", помнится где-то об этом уже писали.
Возможности этих кнопок возможно затолкать в меню, как тебе надо?
var contextMenu = document.getElementById("contentAreaContextMenu"); var newLabel = document.createElement("menuitem"); newLabel.setAttribute("label","Поиск по сайту(google)"); newLabel.setAttribute("id","searchToSite"); contextMenu.insertBefore(newLabel, document.getElementById("context-copy") ); document.getElementById("searchToSite").addEventListener("click", function(event) { searchToSite() }, false); document.getElementById('contentAreaContextMenu').addEventListener('popupshowing', function(event) { if ( event.target != event.currentTarget ) return; document.getElementById("searchToSite").hidden = (document.commandDispatcher.focusedWindow.getSelection()== ''); }, false); function searchToSite() { var text = document.commandDispatcher.focusedWindow.getSelection(); var doc = getBrowser (). contentDocument; try { var url = doc. location. hostname } catch(e) { var url = "" }; var text = escape (convertFromUnicode ("UTF-8", text)); var url = encodeURIComponent (url); var searchUrl = "http://www.google.com/search?as_q=" + text + "&as_sitesearch=" + url; gBrowser.selectedTab = gBrowser.addTab(searchUrl); };
Отредактировано bunda1 (26-11-2012 23:16:04)
Отсутствует
[Kiril__777
По поводу поиска по сайту, вроде еще была такая функция в кнопке жестом мыши, вот только не помню в какой, а поиск здесь как-то не очень мне понятно устроен, на запрос "жесты мыши" выдает одну страничку, и ни одной кнопки там нет.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Kiril__777
Ну и пример как добавить оригинальный пункт:
var contextMenu = document.getElementById("contentAreaContextMenu"); var nextEleMenu = document.getElementById("context-inspect"); var parentEleMenu = nextEleMenu.parentNode; var menuId = "context-ext-addon"; var menuItem = document.getElementById(menuId); if (menuItem) { parentEleMenu.removeChild(menuItem.previousElementSibling); parentEleMenu.removeChild(menuItem); }; menuItem = document.createElement("menuitem"); menuItem.setAttribute("id", menuId); menuItem.setAttribute("label", "Поиск по текущему сайту"); menuItem.setAttribute("oncommand", "(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=content,s=w.prompt('Поиск на этом сайте с помощью Google',getSel(w));if(s){w.open('http://www.google.com/search?as_q='+encodeURIComponent(s)+'&as_sitesearch='+w.location.hostname)}})()"); parentEleMenu.insertBefore(menuItem, nextEleMenu); menuSeparator = document.createElement("menuseparator"); parentEleMenu.insertBefore(menuSeparator, nextEleMenu);
Отредактировано Lex1 (26-11-2012 23:42:32)
Отсутствует
Lex1
Может ты знаешь как получить адрес закладки по клику на заладке если закладки открыты в вкладе:
gBrowser.loadOneTab("chrome://browser/content/bookmarks/bookmarksPanel.xul", null, null, null, false, false)
ну и:
function onClick(e) { if ( e.button==0 && content.location.href == 'chrome://browser/content/bookmarks/bookmarksPanel.xul' ) { e.preventDefault(); e.stopPropagation(); var target = e.target; alert(????); } }; gBrowser.addEventListener('click', onClick, false);
Отредактировано bunda1 (26-11-2012 23:53:52)
Отсутствует
bunda1
Во, так вроде alert'ится...
function onClick(e) { if ( e.button==0 && content.location.href == 'chrome://browser/content/bookmarks/bookmarksPanel.xul' ) { e.preventDefault(); e.stopPropagation(); var target = e.target; var row = {}; var tree = target.parentNode; var tbo = tree.treeBoxObject; tbo.getCellAt(e.clientX, e.clientY, row, {}, {}); var node = tree.view.nodeForTreeIndex(row.value); alert(node.uri); } }; gBrowser.addEventListener('click', onClick, true); this.onDestroy = function() { gBrowser.removeEventListener('click', onClick, true); }
Отсутствует
bunda1
Спасибо,
Остановить все вкладки
переместил через Инспектора DOM куда нужно, но после перезапуска браузера это не сохраняется, что поменять в самом коде для перемещения не догадался.
villa7
Жестами не пользуюсь, поэтому сразу отпадает, но на всякий случай запомню, может пригодится.
Lex1
добавить оригинальный пункт
Просто супер, то что нужно, даже перемещать никуда не нужно.
Заметил, что пока кнопка в боковой панели не видна, то и пункта меню не видно.
Отредактировано Kiril__777 (27-11-2012 06:53:40)
Отсутствует
Kiril__777
А вот так можно перетащить всё подменю, (почти) без изменений в коде.
var itemsArr = [ ["Искать страницу в кэше Google", function(){window.open('http://www.google.com/search?q=cache:'+location.href)}], ["Искать страницу на Archive.org", function(){window.open('http://web.archive.org/web/*/'+location.href)}], , ["Искать логин на BugMeNot.com", function(){window.open('http://www.bugmenot.com/view/'+location.hostname,'BugMeNot_'+location.hostname,'width=500,height=400,left=100,top=100,scrollbars=yes,location=no')}], ["Проверить с помощью Dr.Web Online", function(){window.open('http://online.drweb.com/result?url='+escape(location.href),'DrWeb_'+location.href,'width=640,height=400,left=200,top=100,scrollbars=yes,location=no')}], ["Проверить доступность сайта", function(){window.open('http://downforeveryoneorjustme.com/'+location.hostname,'DownForMe_'+location.hostname,'width=600,height=400,left=100,top=100,scrollbars=yes,location=no')}], , ["Поиск по текущему сайту", 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)}}], ["Сгенерировать/показать пароль", function(){var getRandomPass=function(d){var chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';var rez='';var len=d>=3?d:3;while(rez.length<len){rez+=chars.charAt(Math.floor(Math.random()*chars.length))}return/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).+$/.test(rez)?rez:arguments.callee(len)};var findPassEle=function(p){var c,s='',r=false,f=document.getElementsByTagName('form');for(var i=0;i<f.length;i++){c=f[i].elements;for(var j=0,e;e=c[j];j++){if(e.type=='password'){r=true;if(p){e.value=p;e.focus()}else if(e.value)s+='\n\n'+e.value}}};return r?s:null};var s=findPassEle();if(s){alert('На этой странице уже имеется пароль:'+s)}else{findPassEle(prompt('Пароль сгенерирован'+(s==null?':':'. Вставить?'),getRandomPass(12)))}}], ["Показать ссылки на Flash/Video", function(){var getVideo=function(flashvars,src){var getLink=function(s){var a=s.match(/[^\s\x22=&?]+\.[^\s\x22=&?\/]*(flv|mp4)/i);return a?a[0]:''};var getQuery=function(s,q){var a=s.match(new RegExp('(^|[&?])'+q+'=([^&]+)'));return a?a[2]:''};var getJson=function(s,q){var a=s.match(new RegExp('\x22'+q+'\x22:\\s*(\x22.+?\x22)'));return a?eval(a[1]):''};var getURL=function(f,s){return f.match(/^(\w+:\/\/|\/|$)/)?f:s.replace(/[#?].*$/,'').replace(/[^\/]*$/,f)};var decodeURL=function(s){try{return decodeURIComponent(s)}catch(e){return unescape(s)}};var q='',url=location.href,flv=decodeURL(flashvars);if(url.indexOf('youtube.com/watch?')!=-1&&(q=getQuery(flv,'url')))return decodeURL(q)+'&signature='+getQuery(flv,'sig')+'&title='+encodeURIComponent(document.title);if(url.indexOf('video.google.com/videoplay?')!=-1&&(q=getQuery(src,'videoUrl')))return decodeURL(q);if(url.indexOf('metacafe.com/watch/')!=-1&&(q=getJson(flv,'mediaURL')))return q+'?__gda__='+getJson(flv,'value');if(url.indexOf('dailymotion.com/')!=-1&&(q=getJson(flv,'hqURL')||getJson(flv,'sdURL')))return q;if(url.indexOf('www.break.com/')!=-1&&(q=getQuery(flv,'videoPath')))return q+'?'+getQuery(flv,'icon');if(url.indexOf('my-hit.ru/film/')!=-1&&(q=getLink(flv)))return q+'?start=0&id='+getQuery(flv,'id');return getURL(getLink(flv)||decodeURL(getLink(src)),src)};var createLink=function(url,txt){var oLnk=document.createElement('a');oLnk.setAttribute('href',url);oLnk.setAttribute('style','display:inline;margin:0;padding:0;font:14px Times New Roman;text-decoration:underline;text-transform:none;');oLnk.appendChild(document.createTextNode(txt));return oLnk};var showLink=function(oEle,src,flv){var cName='ujs_downlink';var p=oEle.previousSibling;if(p&&p.className==cName){oEle.parentNode.removeChild(p);return};if(src){var oDiv=document.createElement('div');oDiv.setAttribute('style','display:block;position:static;float:none;margin:0;padding:0;width:auto;height:auto;font:14px Times New Roman;color:#555;z-index:999;');oDiv.className=cName;oDiv.appendChild(createLink(src,'Download'));var v=getVideo(flv,src);if(v){oDiv.appendChild(document.createTextNode(' ('));oDiv.appendChild(createLink(v,'Video'));oDiv.appendChild(document.createTextNode(')'))};oEle.parentNode.insertBefore(oDiv,oEle)}};var getParam=function(e,n){var v='',r=new RegExp('^('+n+')$','i');var param=e.getElementsByTagName('param');for(var i=0,p;p=param[i];i++){if(r.test(p.getAttribute('name'))){v=p.getAttribute('value');break}};return v};var searchEmbed=function(w){if(!w)return;var obj=w.document.getElementsByTagName('object');for(var i=0,oi;oi=obj[i];i++){if(oi.parentNode)showLink(oi,oi.getAttribute('data')||oi.getAttribute('src')||getParam(oi,'movie|data|src|code|filename|url')||(oi.getElementsByTagName('embed').length&&oi.getElementsByTagName('embed')[0].getAttribute('src')),getParam(oi,'flashvars'))};var em=w.document.getElementsByTagName('embed');for(var i=0,ei;ei=em[i];i++){if(ei.parentNode&&ei.parentNode.nodeName.toLowerCase()!='object')showLink(ei,ei.getAttribute('src'),ei.getAttribute('flashvars'))};for(var j=0,f;f=w.frames[j];j++){try{arguments.callee(f)}catch(e){}}};searchEmbed(window)}], , ["Информация о странице", function(){var meta='',scripts='',embed='',iframes='',cookies='';var corrUrl=function(url){if(!url)return'';var q=url.indexOf('?')+1;return((q&&url.length>50)?url.slice(0,q>50?q:50)+'\u2026':url)+'\n'};var fullUrl=function(url){var a=document.createElement('a');a.href=url;return url?corrUrl(a.href):''};var m=document.getElementsByTagName('meta');for(var i=0,mi;mi=m[i];i++){meta+=(mi.name?mi.name+': ':(mi.httpEquiv?mi.httpEquiv+': ':''))+mi.content+'\n'};var s=document.getElementsByTagName('script');for(var i=0,si;si=s[i];i++){if(si.src)scripts+=corrUrl(si.src)};var e=document.getElementsByTagName('embed');var o=document.getElementsByTagName('object');for(var i=0,ei;ei=e[i];i++){embed+=fullUrl(ei.getAttribute('src'))};for(var i=0,oi;oi=o[i];i++){var src=oi.getAttribute('data')||oi.getAttribute('src')||oi.getAttribute('source');if(!src){var params=oi.getElementsByTagName('param');for(var j=0,p;p=params[j];j++){if(p.hasAttribute('name')&&p.getAttribute('name').match(/^(movie|data|src|code|filename|url|source)$/i)){src=p.getAttribute('value');break}}};var lnk=fullUrl(src);if(embed.indexOf(lnk)==-1)embed+=lnk};var f=document.getElementsByTagName('iframe');for(var i=0,fi;fi=f[i];i++){if(fi.src)iframes+=corrUrl(fi.src)};var c=document.cookie.split(';');for(var i=0,ci;ci=c[i];i++){while(ci.charAt(0)==' ')ci=ci.slice(1);if(ci.length>40)ci=ci.slice(0,40)+'\u2026';cookies+=ci+'\n'};var lastmod=(Date.parse(document.lastModified)==0)?'':document.lastModified;var mode=document.getElementsByTagName('HTmL').length==0?'Really strict':(document.compatMode=='CSS1Compat'?'Normal strict':'Quirks');var title=document.title||(document.getElementsByTagName('title')[0]&&document.getElementsByTagName('title')[0].text)||'';if(meta)meta='\nMeta-данные:\n'+meta;if(scripts)scripts='\nСкрипты:\n'+scripts;if(embed)embed='\nВстроенные объекты:\n'+embed;if(iframes)iframes='\nIframes:\n'+iframes;if(cookies)cookies='\nCookies:\n'+cookies;alert('Идентификация браузера: '+navigator.userAgent+'\n\nЗаголовок: '+title+'\n\nАдрес: '+location.href+'\n\nРеферрер: '+document.referrer+'\n\nДата последнего изменения: '+lastmod+'\n\nРежим отображения: '+mode+' mode\n'+meta+scripts+embed+iframes+cookies)}], ["Исходный код (snapshot)", function(){var q=' ',C={img:1,br:1,link:1,input:1,hr:1,meta:1},u=false,v=0,D=1,g=window.document,m=window.location,w='resizable=yes,scrollbars=yes,location=no',h='</span></li>';var x=function(a){return'<span class=\'tag\'><'+a+''};var y=function(a){return(a?'/':'')+'></span>'};var z=function(a,b){if(b||C[a.toLowerCase()])return'';return'<span class=\'tag\'></'+a+'></span>'};var j=function(){var a=v.toString();while(a.length<3)a='0'+a;return'<li class=\'line'+(D&&((v++)&1)?' dark\'':'\'')+'><span>'};var n=function(a){return a.replace(/</g,'<').replace(/>/g,'>')};var E=function(a){var b=a.doctype,c='';if(b){c=j()+x('!DOCTYPE')+' <span class=\'attrDoc\'>'+b.nodeName+(b.publicId?' PUBLIC \''+b.publicId+'\'':'')+(b.systemId?'</span></span>'+h+j()+'<span class=\'tag\'><span class=\'attrDoc\'>'+q+'\''+b.systemId+'\'':'')+'</span>'+y()+h}return c};var F=function(a){var b=a.attributes,c=null,d='';for(var f=0;c=b[f];f++){if(c.specified&&c.value){d+=' <span class=\'attrTitle\'>'+c.name+'</span>=<span class=\'attrValue\'>\x22'+n(c.value.replace(/\t/g,q))+'\x22</span> '}}return d};var r=function(a){return n(a.nodeValue.replace(/[\n\t\r\u00A0]+ */g,'').replace(/ +/g,' '))};var G=function(a){var b=0,c='';while(b<a){c+=q;b++}return c};var A=function(a,b,c){var d='',f=G(b++);switch(a.nodeType){case 1:{var i=a.childNodes,k=null;var s=(i.length==0)||(i.length==1&&i[0].nodeType==3);var t=u&&i.length==0;var l=j()+f+x(a.nodeName)+F(a)+y(t);if(!s)l+=h;for(var B=0;k=i[B];B++){l+=A(k,b,!s&&k.nodeType==3)}if(s){l+=(a.nodeName.toLowerCase()=='textarea'?n(a.value):'')+z(a.nodeName,t)+h}else{l+=j()+f+z(a.nodeName,t)+h}return l}case 3:{if((d=r(a))&&c){return j()+f+d+h}else{return d}}case 4:{d=r(a);return j()+f+'<span class=\'cdata\'><![CDATA[</span>'+d+'<span class=\'cdata\'>]]></span>'+h}case 8:{d=r(a);return j()+f+'<span class=\'comment\'><!--'+d+'--></span>'+h}}return a.nodeType};var H=function(a){var b,c='';if(a){var d=a.getSelection().getRangeAt(0),f=d.commonAncestorContainer;if(f.nodeType==3||f.nodeType==4)f=f.parentNode;b=f.cloneNode(false);b.appendChild(d.cloneContents());var i=d.startContainer,k=d.endContainer;if(i!=f.firstChild||(i.nodeType==3&&d.startOffset!=0))b.insertBefore(g.createTextNode('\u2026'),b.firstChild);if(k!=f.lastChild||(k.nodeType==3&&d.endOffset!=k.nodeValue.length))b.appendChild(g.createTextNode('\u2026'))}else{c=E(g);b=g.documentElement};c+=A(b,0);return c};var I=function(a){if(a&&a.getSelection){if(a.getSelection().toString())return a;for(var b=0,c,d;c=a.frames[b];b++){try{if(d=arguments.callee(c))return d}catch(e){}}}};var o=I(window);if(o){g=o.document;m=o.location;w+=',width=800,height=500,left=100,top=100'};u=/[a-z]/.test(g.documentElement.nodeName);var J='<!DOCTYPE html PUBLIC><html><head><title>Snapshot: '+((g.getElementsByTagName('title').length&&n(g.getElementsByTagName('title')[0].text))||(m.protocol+'//'+m.host+m.pathname))+'</title><style type=\'text/css\'>body{padding:0 5px;margin:0;font-family:sans-serif;font-size:.7em;background-color:#FFF;color:#000;}#content{white-space:pre-wrap}ol{color:#999;}span{color:#000}.tag{color:#05F}.attrTitle{color:#E00}.attrValue{color:#C0C}.attrDoc{color:#800080}.comment{color:#008000}.cdata{color:#63D}.line{margin:0;padding:0}.dark{background-color:#FAFAFA}</style></head><body><ol id=\'content\'>'+H(o)+'</ol></body></html>';var p=window.open('about:blank','_blank',w);p.document.write(J);p.document.onkeydown=function(a){if(a.keyCode==27)p.close()};p.document.close()}], , ["Шахматы", function(){window.open('data:text/html;base64,PGh0bWw+PGhlYWQ+PHRpdGxlPkNoZXNzPC90aXRsZT48bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9Ik9zY2FyIFRvbGVkbyBHLiI+PG1ldGEgbmFtZT0ic2l0ZSIgY29udGVudD0iaHR0cDovL25hbm9jaGVzcy4xMTBtYi5jb20vY2hlc3M0Lmh0bWwiPjwvaGVhZD48Ym9keT48c2NyaXB0PnZhciBCLGkseSx1LGIsST1bXSxHPTEyMCx4PTEwLHo9MTUsTT0xZTQsbD1bNSwzLDQsNiwyLDQsMyw1LDEsMSwxLDEsMSwxLDEsMSw5LDksOSw5LDksOSw5LDksMTMsMTEsMTIsMTQsMTAsMTIsMTEsMTMsMCw5OSwwLDMwNiwyOTcsNDk1LDg0NiwtMSwwLDEsMiwyLDEsMCwtMSwtMSwxLC0xMCwxMCwtMTEsLTksOSwxMSwxMCwyMCwtOSwtMTEsLTEwLC0yMCwtMjEsLTE5LC0xMiwtOCw4LDEyLDE5LDIxXTtmdW5jdGlvbiBYKHcsYyxoLGUsUyxzKXt2YXIgdCxvLEwsRSxkLE89ZSxOPS1NKk0sSz03OC1oPDx4LHAsZyxuLG0sQSxxLHIsQyxKLGE9eT8teDp4O3lePTg7RysrO2Q9d3x8cyYmcz49aCYmWCgwLDAsMCwyMSwwLDApPk07ZG97aWYobz1JW3A9T10pe3E9byZ6Xnk7aWYocTw3KXtBPXEtLSYyPzg6NDtDPW8tOSZ6P1s1Myw0Nyw2MSw1MSw0Nyw0N11bcV06NTc7ZG97cj1JW3ArPWxbQ11dO2lmKCF3fHA9PXcpe2c9cXxwK2EtUz8wOlM7aWYoIXImKCEhcXxBPDN8fCEhZyl8fChyKzEmel55KT45JiZxfEE+Mil7aWYobT0hKHItMiY3KSlyZXR1cm4geV49OCxJW0ctLV09TyxLO0o9bj1vJno7RT1JW3AtYV0mejt0PXF8RS03P246KG4rPTIsNl55KTt3aGlsZShuPD10KXtMPXI/bFtyJjd8MzJdLWgtcTowO2lmKHMpTCs9KDEtcT9sWyhwLXAleCkveCszN10tbFsoTy1PJXgpL3grMzddK2xbcCV4KzM4XSoocT8xOjIpLWxbTyV4KzM4XSsobyYxNikvMjohIW0qOSkrKCFxPyEoSVtwLTFdXm4pKyEoSVtwKzFdXm4pK2xbbiY3fDMyXS05OSshIWcqOTkrKEE8Mik6MCkrIShFXnleOSk7aWYocz5ofHwxPHMmcz09aCYmTD56fGQpe0lbcF09bixJW09dPW0/KElbZ109SVttXSxJW21dPTApOmc/SVtnXT0wOjA7TC09WChzPmh8ZD8wOnAsTC1OLGgrMSxJW0crMV0sSj1xfEE+MT8wOnAscyk7aWYoIShofHxzLTF8Qi1PfGktbnxwLWJ8TDwtTSkpcmV0dXJuIFcoKSxHLS0sdT1KO0o9cS0xfEE8N3x8bXx8IXN8ZHxyfG88enx8WCgwLDAsMCwyMSwwLDApPk07SVtPXT1vO0lbcF09cjttPyhJW21dPUlbZ10sSVtnXT0wKTpnP0lbZ109OV55OjB9aWYoTD5OfHxzPjEmJkw9PU4mJiFoJiZNYXRoLnJhbmRvbSgpPC41KXtJW0ddPU87aWYocz4xKXtpZihoJiZjLUw8MClyZXR1cm4geV49OCxHLS0sTDtpZighaClpPW4sQj1PLGI9cH1OPUx9bis9Snx8KGc9cCxtPXA8Tz9nLTM6ZysyLElbbV08enxJW20rTy1wXXx8SVtwKz1wLU9dKT8xOjB9fX19d2hpbGUoIXImcT4yfHwocD1PLHF8QT4yfG8+eiYhciYmKytDKi0tQSkpfX19d2hpbGUoKytPPjk4P089MjA6ZS1PKTtyZXR1cm4geV49OCxHLS0sTitNKk0mJk4+LUsrMTkyNHxkP046MH1CPWk9eT11PTA7d2hpbGUoQisrPDEyMClJW0ItMV09QiV4P0IveCV4PDJ8QiV4PDI/NzpCL3gmND8wOmxbaSsrXXwxNjo3O2ZvcihhPSI8dGFibGUgY2VsbHNwYWNpbmc9MCBhbGlnbj1jZW50ZXIgYm9yZGVyPTA+IixCPTA7Qjw4O0IrKylmb3IoYSs9Ijx0cj4iLGk9MjE7aTwyOTtpKyspYSs9Ijx0ZCB3aWR0aD02MCBoZWlnaHQ9NjAgb25jbGljaz1ZKCIrKEIqeCtpKSsiKSBpZD1vIisoQip4K2kpKyIgc3R5bGU9J2xpbmUtaGVpZ2h0OjUwcHg7Zm9udC1zaXplOjUwcHg7Ym9yZGVyOjJweCBzb2xpZCAiKyIjZTBlMGYwJyBiZ2NvbG9yPSMiKyhpK0ImMT8iZjBmIjoiYzBjIikrIjBmMCBhbGlnbj1jZW50ZXI+IjthKz0iPHRyPjx0ZCBjb2xzcGFuPTggYWxpZ249Y2VudGVyPjxzZWxlY3QgaWQ9dCBzdHlsZT0nZm9udC1zaXplOjIwcHgnPjxvcHRpb24+JiM5ODE5OzxvcHRpb24+Ijtkb2N1bWVudC53cml0ZShhKyImIzk4MjA7PG9wdGlvbj4mIzk4MjE7PG9wdGlvbj4mIzk4MjI7PC9zZWxlY3Q+PC90YWJsZT4iKTtmdW5jdGlvbiBXKCl7Qj1iO2ZvcihwPTIxO3A8OTk7cCs9cCV4LTg/MTozKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibyIrcCkuaW5uZXJIVE1MPSJceGEwXHUyNjVmXHUyNjVhXHUyNjVlXHUyNjVkXHUyNjVjXHUyNjViICBcdTI2NTlcdTI2NTRcdTI2NThcdTI2NTdcdTI2NTZcdTI2NTUiLmNoYXJBdChJW3BdJnopO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvIitwKS5zdHlsZS5ib3JkZXJDb2xvcj1wPT1CPyJyZWQiOiIjZTBlMGYwIn19VygpO2Z1bmN0aW9uIFkocyl7aT0oSVtzXV55KSZ6O2lmKGk+OCl7Yj1zO1coKX1lbHNlIGlmKEImJmk8OSl7Yj1zO2k9SVtCXSZ6O2lmKChpJjcpPT0xJihiPDI5fGI+OTApKWk9MTQtZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQiKS5zZWxlY3RlZEluZGV4Xnk7WCgwLDAsMCwyMSx1LDEpO2lmKHkpd2luZG93LnNldFRpbWVvdXQoIlgoMCwwLDAsMjEsdSwyLypwbHkqLyksWCgwLDAsMCwyMSx1LDEpIiwyNTApfX08L3NjcmlwdD48L2JvZHk+PC9odG1sPgo=','_blank','width=600,height=550,left=200,top=100')}] ]; var contextMenu = document.getElementById("contentAreaContextMenu"); var nextEleMenu = document.getElementById("context-inspect"); var menuId = "context-ext-addon"; var menuItem, menuPopup, menu = document.getElementById(menuId); if (menu) { contextMenu.removeChild(menu.previousElementSibling); contextMenu.removeChild(menu); }; menuPopup = document.createElement("menupopup"); menu = document.createElement("menu"); menu.setAttribute("id", menuId); menu.setAttribute("label", "Дополнительно"); for (var i = 0; i < itemsArr.length; i++) { if (itemsArr[i]) { menuItem = document.createElement("menuitem"); menuItem.setAttribute("label", itemsArr[i][0]); menuItem.addEventListener("command", (function(f){return function(){content.location.href = "javascript:(" + encodeURI(f) + ")()"}})(itemsArr[i][1].toString()), false); } else { menuItem = document.createElement("menuseparator"); }; menuPopup.appendChild(menuItem); }; menu.appendChild(menuPopup); contextMenu.insertBefore(menu, nextEleMenu); contextMenu.insertBefore(document.createElement("menuseparator"), nextEleMenu);
Отредактировано Lex1 (28-11-2012 13:28:25)
Отсутствует
А вот так можно перетащить всё подменю, без изменений в коде.
А вот это
var page = gBrowser.currentURI; var browser = "/usr/bin/opera"; var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(browser); var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, [page.spec], 1); return true;
Отсутствует
Если речь про код выше, то воткнуть перед menu.appendChild(menuPopup);
menuItem = document.createElement("menuitem"); menuItem.setAttribute("label", "open in opera"); menuItem.addEventListener("click", function() { var page = gBrowser.currentURI; var browser = "/usr/bin/opera"; var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(browser); var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, [page.spec], 1); return true; }, false); menuPopup.appendChild(menuItem);
Отредактировано Lex1 (27-11-2012 16:46:11)
Отсутствует
Lex1, спасибо. Сделал так:
/*open in opera*/ var contextMenu = document.getElementById("contentAreaContextMenu"); var nextEleMenu = document.getElementById("context-inspect"); var parentEleMenu = nextEleMenu.parentNode; var menuId = "context-ext-addon"; var menuItem = document.getElementById(menuId); if (menuItem) { parentEleMenu.removeChild(menuItem.previousElementSibling); parentEleMenu.removeChild(menuItem); }; menuItem = document.createElement("menuitem"); menuItem.setAttribute("label", "Открыть текущую страницу в Opera"); menuItem.addEventListener("click", function() { var page = gBrowser.currentURI; var browser = "/usr/bin/opera"; var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(browser); var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, [page.spec], 1); return true; }, false); parentEleMenu.insertBefore(menuItem, nextEleMenu);
Отредактировано lokiju (27-11-2012 17:28:29)
Отсутствует
Отсутствует
Оно должно быть после menuItem = document.createElement("menuitem");
Именно так.
Ну и перезапустите, на всякий случай.
Не помогает.
Работает что-то одно или Открыть текущую страницу в Opera или Дополнительно(подменю букмарклетов)
Отсутствует
Может кто объяснит почему не удаляются обработчики в этом коде:
["mousedown", "mouseup", "dragstart"].forEach(function(type) { gBrowser.mTabContainer.addEventListener(type, function(e) { Services.console.logStringMessage(e.type); }, false) }); this.onDestroy = function() { ["mousedown", "mouseup", "dragstart"].forEach(function(type) { gBrowser.mTabContainer.removeEventListener(type, function(e) { Services.console.logStringMessage(e.type); }, false) }); };
Отсутствует
А если дать ей имя и использовать его в обработчиках?
Отсутствует