Mr. Di
About:config
middlemouse.paste – вставка текста из буфера обмена кликом средней кнопки мыши. Значения:
TRUE – Разрешить
FALSE - Запретить
Отредактировано bunda1 (11-10-2010 13:35:32)
Отсутствует
Anton
Доброго времени суток.
Еще раз спасибо вам, вы мне очень помогли с кодом, хотел задать еще один маленький вопрос...
Вот код:
var pathToDirectory = "~/web"; // "/home/labirint/web var Cc = Components. classes; var Ci = Components. interfaces; var Cr = Components. results; function getDirectory () { var dir = Cc ["@mozilla.org/file/local;1"]. createInstance (Ci. nsILocalFile); dir. initWithPath (pathToDirectory); return dir; } function getText (uri) { var header = messenger. messageServiceFromURI (uri). messageURIToMsgHdr (uri); var charset = header. Charset || "utf-8"; var subject = header. mime2DecodedSubject; var filename = GenerateValidFilename (messenger. messageServiceFromURI (uri). messageURIToMsgHdr (uri). mime2DecodedAuthor + " - " + subject, ".html"); var messageService = messenger. messageServiceFromURI (uri); var file = dir. clone (); file. append (filename); if (file. exists ()) file. createUnique (Ci. nsIFile. NORMAL_FILE_TYPE, 0664); var ssl = { foStream: null, QueryInterface: function (iid) { if (iid. equals (Ci. nsISupports) || iid. equals (Ci. nsIStreamListener)) return this; throw Cr. NS_ERROR_NO_INTERFACE; }, onStartRequest: function (request, context) { this. foStream = Cc ["@mozilla.org/network/file-output-stream;1"]. createInstance (Ci. nsIFileOutputStream); var flags = 0x02 | 0x08 | 0x20; this. foStream. init (file, flags, 0664, 0); }, onStopRequest: function (request, context, status) { this. foStream. close (); }, onDataAvailable: function (request, context, inputStream, offset, count) { var sis = Cc ["@mozilla.org/scriptableinputstream;1"]. createInstance(Ci. nsIScriptableInputStream); sis. init (inputStream); sis. available (); while (sis. available ()) this. foStream. write (sis. read (count), count); } }; var chanURI = messageService. streamMessage (uri, null, {}, null, false, null); var ios = Cc ["@mozilla.org/network/io-service;1"]. getService (Ci. nsIIOService); var chan = ios. newChannelFromURI (chanURI); chan. contentType = "message/rfc822"; var streamConverter = Cc ["@mozilla.org/streamconv;1?from=message/rfc822&to=application/vnd.mozilla.xul+xml"]. createInstance (Ci. nsIStreamConverter); streamConverter. asyncConvertData ("message/rfc822", "application/vnd.mozilla.xul+xml", ssl, chan); chan. asyncOpen (streamConverter, null); } var dir = getDirectory (); if (!dir) return; var messageArray = gFolderDisplay.selectedMessageUris; for (var i = 0; i < messageArray. length; i++) getText (messageArray [i], dir);
Вопрос относится к самому началу кода, можно ли как-то сделать, что бы для каждого письма создавались новые папки с именем письма и уже в нее клалось это письмо?
Прошу прощения за настойчивость и приставания и благодарю еще раз за помощь...
Отсутствует
Mr. Di
var eventHandler = { button: null, get disabled () { return !this. button. checked; }, get urlbar () { return document. getElementById ("urlbar"); }, handleEvent: function (event) { if ((event. target. tagName == "TEXTAREA") || (event. target. tagName == "INPUT") || this. disabled) return; this [event. type] (event); }, keypress: function (event) { if ((event. which == 32) || (event. which == 8) || (event. which == 0) || event. ctrlKey || event. altKey) return; this. urlbar. focus (); this. urlbar. value += String. fromCharCode (event. which); }, click: function (event) { //this. urlbar. focus (); if (event. button == 0) this. urlbar. value = ""; if (event. button == 1) { event. preventDefault (); this. urlbar. value = custombuttonsUtils. gClipboard. read (); } } }; eventHandler. button = this; this. checked = true; document. getElementById ("appcontent"). addEventListener ("keypress", eventHandler, true); document. getElementById ("appcontent"). addEventListener ("click", eventHandler, true);
AbyssMoon
if (file. exists ()) file. createUnique (Ci. nsIFile. DIRECTORY_TYPE, 0755); else file. create (Ci. nsIFile. DIRECTORY_TYPE, 0755); file. append (filename); if (file. exists ()) file. createUnique (Ci. nsIFile. NORMAL_FILE_TYPE, 0664); else file. create (Ci. nsIFile. NORMAL_FILE_TYPE, 0664);
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Mr. Di
About:config
middlemouse.paste – вставка текста из буфера обмена кликом средней кнопки мыши. Значения:
TRUE – Разрешить
FALSE - Запретить
Спасибо, но мне немного не подходит - нет замены выделенному тексту , а это неудобно для меня.
Mr. Di
Код:this. checked = !this. checked;
Инициализация
Супер, огромнейшее спасибо за Ваш ТРУД и потраченное время! Заработало стирание адресной по ЛКМ и автофокус работает, но со средней кнопкой мыши что-то не то, возможно я снова не так изложил в посте свою речь как нужно. Теперь при нажатии два раза средней копки мыши на любом месте интернет страницы в том числе и текстовых полях, текст из буфера обмена вставляется в адресную строку, и при нажатии средней кнопки мыши один раз на любой ссылке на странице текст из буфера вставляется в адресную строку.
1. Хотелось бы чтобы текст из буфера сред.кнопкой вставлялся именно в то текстовое поле в котором работаю и чтобы вставка заменяла выделенный мною в поле текст, а нажатие средней кн. по ссылке (как у меня и настроено было раньше) просто открывало ссылку в новой вкладке.
2. А также если можно при нажатии сред копкой мыши по самой "кастом кнопке" текст из буфера вставлялся бы в адресную строку и после автоматом нажималась клавиша Enter клавиатуры (я имею ввиду (сорри за непрофессионализм в изложении сути ) наступал тот же эффект как и при нажатии клавиши Enter клавиатуры).
Помогите еще разок, пожалуйста.
Отредактировано Mr. Di (12-10-2010 01:39:45)
Отсутствует
Anton
У меня тоже большая просьба,
вот ниже /*Initialization Code*/ кнопки которие дает возможность переключать текущий поисковик, при нажатие на dropmarker рядом с кнопкой появляется выпадающие меню с поисковиками где можно выбрать текущий поисковик. Иконка кнопки отображает текущий поисковик при изменении которого соответственно меняется иконка кнопки.
Пожалуйста, переделай этот код так, чтобы этот dropmarker у кнопки пропал, а выпадающие меню появлялась при нажатии на кнопку(лкм).
function searchService() { return Components.classes["@mozilla.org/browser/search-service;1"] .getService(Components.interfaces.nsIBrowserSearchService); } this.selectEngine = function(aNode, aEvent) { var engine = aEvent.target.engine; var ss = searchService(); ss.currentEngine = ss.getEngineByName(engine.name); aNode.engine = engine; aNode.image = aEvent.target.getAttribute("src"); } this.populateMenu = function(aNode) { var ss = searchService(); var engines = ss.getVisibleEngines({ }); const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; while(aNode.firstChild && aNode.firstChild.localName != "menuseparator") { aNode.removeChild(aNode.firstChild); } for(var i = engines.length - 1; i >= 0; i--) { var mi = document.createElementNS(kXULNS, "menuitem"); mi.id = "cb-search-" + engines[i].name; mi.className = "menuitem-iconic searchbar-engine-menuitem"; mi.setAttribute("label", engines[i].name); if(engines[i].iconURI) mi.setAttribute("src", engines[i].iconURI.spec); mi.engine = engines[i]; if(mi.engine == ss.currentEngine) mi.style.fontWeight = "bold"; mi.setAttribute("onclick", "parentNode.parentNode.selectEngine(parentNode.parentNode, event)"); aNode.insertBefore(mi, aNode.firstChild); } } this.currentEngine = searchService().currentEngine; var ss = searchService(); this.engine = ss.currentEngine; this.image = this.engine.iconURI.spec; var mp = this.appendChild(document.createElement("menupopup")); mp.setAttribute("onpopupshowing", "parentNode.populateMenu(this)"); mp.setAttribute("oncommand", "event.stopPropagation()"); var managerSeparator = mp.appendChild(document.createElement("menuseparator")); managerSeparator.id = "cb-searchbutton-separator" var managerItem = mp.appendChild(document.createElement("menuitem")); managerItem.setAttribute("label", "Manage Search Engines..."); managerItem.setAttribute("oncommand", "openDialog('chrome://browser/content/search/engineManager.xul', " + "'engineManager', 'chrome, dialog=no')"); this.type = "menu-button";
Отсутствует
bunda1
/*Initialization Code*/ function searchService() { return Components.classes["@mozilla.org/browser/search-service;1"] .getService(Components.interfaces.nsIBrowserSearchService); } this.selectEngine = function(aNode, aEvent) { var engine = aEvent.target.engine; var ss = searchService(); ss.currentEngine = ss.getEngineByName(engine.name); aNode.engine = engine; aNode.image = aEvent.target.getAttribute("src"); } this.populateMenu = function(aNode) { var ss = searchService(); var engines = ss.getVisibleEngines({ }); const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; while(aNode.firstChild && aNode.firstChild.localName != "menuseparator") { aNode.removeChild(aNode.firstChild); } for(var i = engines.length - 1; i >= 0; i--) { var mi = document.createElementNS(kXULNS, "menuitem"); mi.id = "cb-search-" + engines[i].name; mi.className = "menuitem-iconic searchbar-engine-menuitem"; mi.setAttribute("label", engines[i].name); if(engines[i].iconURI) mi.setAttribute("src", engines[i].iconURI.spec); mi.engine = engines[i]; if(mi.engine == ss.currentEngine) mi.style.fontWeight = "bold"; mi.setAttribute("onclick", "parentNode.parentNode.selectEngine(parentNode.parentNode, event)"); aNode.insertBefore(mi, aNode.firstChild); } } this.currentEngine = searchService().currentEngine; var ss = searchService(); this.engine = ss.currentEngine; this.image = this.engine.iconURI.spec; var mp = this.appendChild(document.createElement("menupopup")); mp.setAttribute("onpopupshowing", "parentNode.populateMenu(this)"); mp.setAttribute("oncommand", "event.stopPropagation()"); var managerSeparator = mp.appendChild(document.createElement("menuseparator")); managerSeparator.id = "cb-searchbutton-separator" var managerItem = mp.appendChild(document.createElement("menuitem")); managerItem.setAttribute("label", "Manage Search Engines..."); managerItem.setAttribute("oncommand", "openDialog('chrome://browser/content/search/engineManager.xul', " + "'engineManager', 'chrome, dialog=no')"); var that = this; this.hideDropMarker = function() { var dropMarker = document.getAnonymousElementByAttribute(that, "class", "toolbarbutton-menu-dropmarker"); if (dropMarker) { dropMarker.setAttribute("hidden", "true"); } else{ setTimeout(that.hideDropMarker, 10); } } this.hideDropMarker(); this.type="menu";
У меня работает
Отредактировано imyax (12-10-2010 22:40:21)
Отсутствует
Mr. Di
1. Хотелось бы чтобы текст из буфера сред.кнопкой вставлялся именно в то текстовое поле в котором работаю и чтобы вставка заменяла выделенный мною в поле текст, а нажатие средней кн. по ссылке (как у меня и настроено было раньше) просто открывало ссылку в новой вкладке.
2. А также если можно при нажатии сред копкой мыши по самой "кастом кнопке" текст из буфера вставлялся бы в адресную строку и после автоматом нажималась клавиша Enter клавиатуры (я имею ввиду (сорри за непрофессионализм в изложении сути ) наступал тот же эффект как и при нажатии клавиши Enter клавиатуры).
var eventHandler = { button: null, get disabled () { return !this. button. checked; }, get urlbar () { return document. getElementById ("urlbar"); }, handleEvent: function (event) { if (this. disabled) return; this [event. type] (event); }, keypress: function (event) { if ((event. target. tagName == "TEXTAREA") || (event. target. tagName == "INPUT") || (event. which == 32) || (event. which == 8) || (event. which == 0) || event. ctrlKey || event. altKey) return; this. urlbar. focus (); this. urlbar. value += String. fromCharCode (event. which); }, click: function (event) { if ((event. button == 0) && (event. target. tagName != "TEXTAREA") && (event. target. tagName != "INPUT")) this. urlbar. value = ""; if (event. button == 1) goDoCommand ("cmd_paste"); } }; eventHandler. button = this; this. checked = true; document. getElementById ("appcontent"). addEventListener ("keypress", eventHandler, true); document. getElementById ("appcontent"). addEventListener ("click", eventHandler, true); //addEventListener ("keypress", eventHandler, true, document. getElementById ("appcontent")); //addEventListener ("click", eventHandler, true, document. getElementById ("appcontent")); this. onclick = function (event) { if (event. button == 1) { document. getElementById ("urlbar"). value = custombuttonsUtils. gClipboard. read (); document. getElementById ("urlbar"). handleCommand (); } }
Автоматическую прокрутку (Инструменты → Настройки → Дополнительные → Общие → Использовать автоматическую прокрутку) надо, естественно отключить.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Mr. Di
1. Хотелось бы чтобы текст из буфера сред.кнопкой вставлялся именно в то текстовое поле в котором работаю и чтобы вставка заменяла выделенный мною в поле текст, а нажатие средней кн. по ссылке (как у меня и настроено было раньше) просто открывало ссылку в новой вкладке.
2. А также если можно при нажатии сред копкой мыши по самой "кастом кнопке" текст из буфера вставлялся бы в адресную строку и после автоматом нажималась клавиша Enter клавиатуры (я имею ввиду (сорри за непрофессионализм в изложении сути ) наступал тот же эффект как и при нажатии клавиши Enter клавиатуры).скрытый текст
Код:var eventHandler =
{
button: null,....Автоматическую прокрутку (Инструменты → Настройки → Дополнительные → Общие → Использовать автоматическую прокрутку) надо, естественно отключить.
Спасибо, Вы воплощаете мечты в реальность! Но есть несколько моментов для огранения алмаза, поправьте код, пожалуйста:
1. Не работает вставка текста средней кнопкой мыши в адресной строке (в полях на интернет странице вставка работает замечательно, огромное спасибо) - сделайте, пожалуйста;
2. Я пользуюсь расширением "Omnibar", сейчас вы сделали, как я и просил, вставку в адресную строку текста из буфера и автоматический переход, при нажатии средней кнопкой мыши по самой "кастом кнопке" - при вставке ссылки все работает - переходит по вставленной ссылке, а если я таким образом вставляю просто текст, то ищет он его всегда в Яндексе (как в поиске по умолчанию русскоязычной Лисы через адресную строку без "Omnibara"), а хотелось бы, чтобы искал в текущем (выбранном) поисковике;
3. В некоторых текстовых полях текст набирать не получается срабатывает автофокус на адресную строку, такое я заметил в некоторых текстовых полях на Gmail, а также в about:config.
Еще раз спасибо Вам за помощь!
Отсутствует
Mr. Di
1. Не работает вставка текста средней кнопкой мыши в адресной строке (в полях на интернет странице вставка работает замечательно, огромное спасибо) - сделайте, пожалуйста;
3. В некоторых текстовых полях текст набирать не получается срабатывает автофокус на адресную строку, такое я заметил в некоторых текстовых полях на Gmail, а также в about:config.
var eventHandler = { button: null, get disabled () { return !this. button. checked; }, get urlbar () { return document. getElementById ("urlbar"); }, handleEvent: function (event) { if (this. disabled) return; var tn = event. target. tagName. toLowerCase (); if (((event. type == "keypress") || (event. button == 0)) && ((tn == "textarea") || (tn == "input") || (tn == "textbox"))) return; this [event. type] (event); }, keypress: function (event) { if ((event. which == 32) || (event. which == 8) || (event. which == 0) || event. ctrlKey || event. altKey) return; this. urlbar. focus (); this. urlbar. value += String. fromCharCode (event. which); }, click: function (event) { //this. urlbar. focus (); if ((event. button == 0) && (event. target. ownerDocument instanceof HTMLDocument)) this. urlbar. value = ""; if (event. button == 1) { var controller = top. document. commandDispatcher. getControllerForCommand ("cmd_paste"); if (controller && controller. isCommandEnabled ("cmd_paste")) controller. doCommand ("cmd_paste"); } } }; eventHandler. button = this; this. checked = true; document. getElementById ("appcontent"). addEventListener ("keypress", eventHandler, true); window. addEventListener ("click", eventHandler, true); this. onclick = function (event) { if (event. button == 1) { document. getElementById ("urlbar"). value = custombuttonsUtils. gClipboard. read (); document. getElementById ("urlbar"). handleCommand (); } };
2. Я пользуюсь расширением "Omnibar", сейчас вы сделали, как я и просил, вставку в адресную строку текста из буфера и автоматический переход, при нажатии средней кнопкой мыши по самой "кастом кнопке" - при вставке ссылки все работает - переходит по вставленной ссылке, а если я таким образом вставляю просто текст, то ищет он его всегда в Яндексе (как в поиске по умолчанию русскоязычной Лисы через адресную строку без "Omnibara"), а хотелось бы, чтобы искал в текущем (выбранном) поисковике;
Не сделаю.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Господа, а вот такую кнопочку можно сотворить? Чтобы добавленные в её список ссылки открывались в полноэкранном режиме Например это было бы очень удобно в случае с GReader и GMail
Отсутствует
Есть расширение Popup Url and Search Bar - прикрутить бы к нему пару кнопочек для вызова Url Bar и Search Bar
Отсутствует
Anton
большая просьба
пожалуйста подскажи /*Initialization Code*/ который дабавлял в контекстное меню менеджера раширений пункт- открыть папку расширения, вот ниже код для раширение userChromeJS который делает подобное, у меня Firefox portable.
var OpenAddonFolder = { init: function() { document.getElementById("addonContextMenu").addEventListener("popupshowing", this, false); }, launchDir: function() { var selectedItem = gExtensionsView.selectedItem; var addonID = selectedItem.getAttribute("addonID"); var dir = gExtensionManager.getInstallLocation(addonID); dir = dir.getItemLocation(addonID); dir.QueryInterface(Components.interfaces.nsILocalFile); dir.launch(); }, handleEvent: function(event) { var selectedItem = gExtensionsView.selectedItem; var addonID = selectedItem.getAttribute("addonID"); var dir = gExtensionManager.getInstallLocation(addonID); if (!addonID || !dir) return; var popup = event.target; var menuitem = document.createElement("menuitem"); menuitem.setAttribute("label", "Open Folder"); menuitem.setAttribute("oncommand", "OpenAddonFolder.launchDir();"); popup.insertBefore(menuitem, document.getElementById("menuitem_homepage_clone")); } }; OpenAddonFolder.init();
Отредактировано bunda1 (19-10-2010 14:37:40)
Отсутствует
Караул, помогите!
Вот ниже Initialization Code кнопки , при нажатие на dropmarker рядом с кнопкой появляется выпадающие меню с поисковиками где можно выбрать текущий поисковик.
Но почему то при нажатие на dropmarker также срабатывает this.leftclick = function(e){........... в Initialization Code кнопки.
Как это прекратить!!!
this.tooltipText = "L=search clipboard/selected text\nDL=open selected links \nM=open selected links \nR=open URL from clipboard\nCtrl+R=контекстное меню "; this.leftclick = function(e) { goDoCommand("cmd_copy"); var str = readFromClipboard(); var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService); var submission = ss.currentEngine.getSubmission(str, null); gBrowser.loadOneTab(submission.uri.spec, null, null, submission.postData, true, false); } this.leftDclick = function(event) { var str = gURLBar.value; var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService); var submission = ss.currentEngine.getSubmission(str, null); gBrowser.loadOneTab(submission.uri.spec, null, null, submission.postData, true, false); }; this.midclick = function (evt){ warn_if_opening_more_than = 16; var browser = getBrowser(); var n_to_open,dl,dll,i; function linkIsSafe(u) { if (u.substr(0,7)=='mailto:' ) return false; if (u.substr(0,11)=='javascript:') return false; return true; } n_to_open = 0; dl = window._content.document.links; dll = dl.length; if (window._content.getSelection && window._content.getSelection().containsNode) { for(i=0; i<dll; ++i) { if (window._content.getSelection().containsNode(dl[i], true) && linkIsSafe(dl[i].href)) { ++n_to_open; } } if (n_to_open && (n_to_open<=warn_if_opening_more_than || confirm('Open ' + n_to_open + ' selected links in new windows?'))) { for(i=0; i<dll; ++i) { if (window._content.getSelection().containsNode(dl[i], true) && linkIsSafe(dl[i].href)) { browser.addTab(dl[i].href); } } } } if (!n_to_open) { /* if no links selected, open all links */ for(i = 0; i < dll; ++i) { if (linkIsSafe(dl[i].href)) ++n_to_open; } if (!n_to_open) alert ('no links'); else { if (confirm('No links selected. Open ' + n_to_open + ' links in new windows?')) { for (i = 0; i < dll; ++i) { if (linkIsSafe(dl[i].href)) { browser.addTab(dl[i].href); } } } } } }; this.rightclick = function(event) { goDoCommand("cmd_copy"); const IN_NEW_TAB = true; const IN_BACKGROUND = false; var str = readFromClipboard(); if (!str) return; if (IN_NEW_TAB) gBrowser.loadOneTab(str, null, null, null, IN_BACKGROUND, false); else gBrowser.loadURI(str); }; this.setAttribute('onclick', 'gQuot(event, this)'); this.setAttribute('ondblclick', 'gQuot(event, this)'); function searchService() { return Components.classes["@mozilla.org/browser/search-service;1"] .getService(Components.interfaces.nsIBrowserSearchService); } this.selectEngine = function(aNode, aEvent) { var engine = aEvent.target.engine; var ss = searchService(); ss.currentEngine = ss.getEngineByName(engine.name); aNode.engine = engine; aNode.image = aEvent.target.getAttribute("src"); } this.populateMenu = function(aNode) { var ss = searchService(); var engines = ss.getVisibleEngines({ }); const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; while(aNode.firstChild && aNode.firstChild.localName != "menuseparator") { aNode.removeChild(aNode.firstChild); } for(var i = engines.length - 1; i >= 0; i--) { var mi = document.createElementNS(kXULNS, "menuitem"); mi.id = "cb-search-" + engines[i].name; mi.className = "menuitem-iconic searchbar-engine-menuitem"; mi.setAttribute("label", engines[i].name); if(engines[i].iconURI) mi.setAttribute("src", engines[i].iconURI.spec); mi.engine = engines[i]; if(mi.engine == ss.currentEngine) mi.style.fontWeight = "bold"; mi.setAttribute("onclick", "parentNode.parentNode.selectEngine(parentNode.parentNode, event)"); aNode.insertBefore(mi, aNode.firstChild); } } this.currentEngine = searchService().currentEngine; var ss = searchService(); this.engine = ss.currentEngine; this.image = this.engine.iconURI.spec; var mp = this.appendChild(document.createElement("menupopup")); mp.setAttribute("onpopupshowing", "parentNode.populateMenu(this)"); mp.setAttribute("oncommand", "event.stopPropagation()"); var managerSeparator = mp.appendChild(document.createElement("menuseparator")); managerSeparator.id = "cb-searchbutton-separator" var managerItem = mp.appendChild(document.createElement("menuitem")); managerItem.setAttribute("label", "Manage Search Engines..."); managerItem.setAttribute("oncommand", "openDialog('chrome://browser/content/search/engineManager.xul', " + "'engineManager', 'chrome, dialog=no')"); this.type = "menu-button";
Отсутствует
Господа, а вот такую кнопочку можно сотворить? Чтобы добавленные в её список ссылки открывались в полноэкранном режиме Например это было бы очень удобно в случае с GReader и GMail
В инициализацию:
var menu = <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:cb="http://xsms.nm.ru/custombuttons/" onclick="this. parentNode. handleClick (event);"> <menuitem label="Engadget" class="menuitem-iconic" image="http://www.blogsmithmedia.com/www.engadget.com/media/favicon.ico" cb:url="http://www.engadget.com/"/> <menuitem label="ScienceDaily" class="menuitem-iconic" image="http://www.sciencedaily.com/favicon.ico" cb:url="http://www.sciencedaily.com/"/> <menuitem label="New Scientist" class="menuitem-iconic" image="http://www.newscientist.com/favicon.ico" cb:url="http://www.newscientist.com/"/> <menuitem label="Popular Mechanics" class="menuitem-iconic" image="http://www.popularmechanics.com/favicon.ico" cb:url="http://www.popularmechanics.com/"/> <menuitem label="Popular Science" class="menuitem-iconic" image="http://www.popsci.com/favicon.ico" cb:url="http://www.popsci.com/"/> <menuitem label="Physics.org" class="menuitem-iconic" image="http://www.physorg.com/favicon.ico" cb:url="http://www.physorg.com/"/> </menupopup>; this. appendChild (custombuttonsUtils. makeXML (menu)); this. type = "menu"; this. orient = "horizontal"; this. handleClick = function (event) { var menuitem = event. target; var url = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "url"); if (event. button == 0) { var win = window. open (url); setTimeout (function () { win. fullScreen = true; }, 100); } this. open = false; };
Есть расширение Popup Url and Search Bar - прикрутить бы к нему пару кнопочек для вызова Url Bar и Search Bar
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton И то и другое работают замечательно - Спасибо
......сразу ,когда идея возникла не дошло что нельзя наверное развёртывать в полноэкранном режиме одну вкладку только в новом окне - получилась альтернатива Prism .....а во втором случае подозревал конечно что нужно вставить тот код что в комментарии к расширению ,но чтобы так просто ....вообщем буду осваивать
Отсутствует
нельзя наверное развёртывать в полноэкранном режиме одну вкладку
Можно текущее окно разворачивать.
var menu = <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:cb="http://xsms.nm.ru/custombuttons/" onclick="this. parentNode. handleClick (event);"> <menuitem label="Engadget" class="menuitem-iconic" image="http://www.blogsmithmedia.com/www.engadget.com/media/favicon.ico" cb:url="http://www.engadget.com/"/> <menuitem label="ScienceDaily" class="menuitem-iconic" image="http://www.sciencedaily.com/favicon.ico" cb:url="http://www.sciencedaily.com/"/> <menuitem label="New Scientist" class="menuitem-iconic" image="http://www.newscientist.com/favicon.ico" cb:url="http://www.newscientist.com/"/> <menuitem label="Popular Mechanics" class="menuitem-iconic" image="http://www.popularmechanics.com/favicon.ico" cb:url="http://www.popularmechanics.com/"/> <menuitem label="Popular Science" class="menuitem-iconic" image="http://www.popsci.com/favicon.ico" cb:url="http://www.popsci.com/"/> <menuitem label="Physics.org" class="menuitem-iconic" image="http://www.physorg.com/favicon.ico" cb:url="http://www.physorg.com/"/> </menupopup>; this. appendChild (custombuttonsUtils. makeXML (menu)); this. type = "menu"; this. orient = "horizontal"; this. handleClick = function (event) { var menuitem = event. target; var url = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "url"); if (event. button == 0) { let newTab = gBrowser.addTab(url) gBrowser.selectedTab = newTab;// loads into a new tab; } else if (event. button == 1) gBrowser. addTab (url); this. open = false; window. fullScreen = true; };
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton ага,такой вариант тоже неплохой в идеале конечно если бы после закрытия той вкладки браузер выходил бы из полноэкранного режима безо всякой помощи
Отсутствует
/*Initialization Code*/ который дабавлял в контекстное меню менеджера раширений пункт- открыть папку расширения, вот ниже код для раширение userChromeJS который делает подобное, у меня Firefox portable.
скрытый текст
var script = <> <script xmlns={xulns} type="application/x-javascript"> <![CDATA[ var OpenAddonFolder = { init: function() { document.getElementById("addonContextMenu").addEventListener("popupshowing", this, false); }, launchDir: function() { var selectedItem = gExtensionsView.selectedItem; var addonID = selectedItem.getAttribute("addonID"); var dir = gExtensionManager.getInstallLocation(addonID); dir = dir.getItemLocation(addonID); dir.QueryInterface(Components.interfaces.nsILocalFile); dir.launch(); }, handleEvent: function(event) { var selectedItem = gExtensionsView.selectedItem; var addonID = selectedItem.getAttribute("addonID"); var dir = gExtensionManager.getInstallLocation(addonID); if (!addonID || !dir) return; var popup = event.target; var menuitem = document.createElement("menuitem"); menuitem.setAttribute("label", "Open Folder"); menuitem.setAttribute("oncommand", "OpenAddonFolder.launchDir();"); popup.insertBefore(menuitem, document.getElementById("menuitem_homepage_clone")); } }; OpenAddonFolder.init(); ]]> </script> </>; var observer = { observe: function (subject, topic, data) { subject. addEventListener ("load", this, false); }, handleEvent: function (event) { var doc = event. originalTarget; if (doc. location && doc. location. href == "chrome://mozapps/content/extensions/extensions.xul") doc. defaultView. eval (script. toString ()); } }; var os = Cc ["@mozilla.org/observer-service;1"]. getService (Ci. nsIObserverService); os. addObserver (observer, "domwindowopened", false);
при нажатие на dropmarker также срабатывает this.leftclick = function(e){........... в Initialization Code кнопки.
после
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton
Спасибо огромное,твоя помощь неоценима,
добавил
if (e.target.nodeName != "button") return;
после
this.leftclick = function(e){
и this.leftclick.....больше не срабатывет после нажатие на dropmarker
но теперь this.leftclick = function(e){ ........не работает
что делать?
Kод который дабавляет в контекстное меню менеджера раширений пункт- открыть папку расширения неработает, даже на новом профиле.
Отредактировано bunda1 (21-10-2010 18:50:08)
Отсутствует
if (e.target.nodeName != "button") return;
Да, это неправильно — в любом случае.
что делать?
Попросить автора кнопки исправить ситуацию.
Kод который дабавляет в контекстное меню менеджера раширений пункт- открыть папку расширения неработает, даже на новом профиле.
У меня работает. Что не так ?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Я сам автор кнопки.
Значит, надо переделать код так, чтобы он не использовал gQuot.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
bunda1
Вот так:
вроде бы работает. Но лучше всё же не пользоваться gQuot.
Дополнение к коду, добавляющему пункт в контекстное меню менеджера расширений:
1. Код не имеет возможности снимать обработчики уведомления об открытых окнах
2. Простым способом проверить, что обработчик уже установлен нет возможности, вследствие чего каждое вновь открытое окно браузера будет добавлять пункт "Open Folder" в контекстное меню менеджера дополнений.
Избежать дублирования пунктов меню можно добавив
var mi = document. getElementsByAttribute ("label", "Open Folder"); if (mi. length >= 1) return;
после
Но при возможности лучше пользоваться расширением userChrome.js
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует