custombuttons-0.0.5.7pre1-20130923
mozdev.org - custombuttons: devbuilds
Marked compatible with Firefox 27.0a1
+ Added: support for 'Browser Console'
# Fixed: buttons doesn't work on Firefox 26 because 'lookupMethod' method was removed from Components
# Fixed: "External edit…" button doesn't work, if path to Firefox profile contains non-ASCII characters
# Fixed: several bugs and mistypes
Отредактировано voqabuhe (23-09-2013 22:25:57)
Отсутствует
А мне бы только код который откроет Browser Console в вкладке
Ну, выбросить сайдбар из этого кода, вроде, не сложно ведь, типа
const { devtools } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}), { DebuggerServer } = Cu.import("resource://gre/modules/devtools/dbg-server.jsm", {}), { DebuggerClient } = Cu.import("resource://gre/modules/devtools/dbg-client.jsm", {}), HUDService = window.HUDService || Cu.import("resource:///modules/HUDService.jsm", {}).HUDService, title = "Browser Console", url = devtools.Tools.webConsole.url; function onLoad(e) { var doc = e.target; if (doc.location != url) return; doc.title = title; var win = doc.defaultView; if (!DebuggerServer.initialized) { DebuggerServer.init(); DebuggerServer.addBrowserActors(); } var client = new DebuggerClient(DebuggerServer.connectPipe()); client.connect(function() { client.listTabs(function(response) { var globals = JSON.parse(JSON.stringify(response)); delete globals.tabs; delete globals.selected; var options = { form: globals, client: client, chrome: true }; var promise = devtools.TargetFactory.forRemoteTab(options); promise.then(function(target) HUDService.openBrowserConsole(target, win, win)); }); }); } addEventListener("load", onLoad, true, gBrowser); this.onclick = function(e) { if (e.button) return; for (var tab of gBrowser.visibleTabs) { if (tab.linkedBrowser.currentURI.spec == url) break; tab = null; } gBrowser.selectedTab = tab || gBrowser.addTab(url); };
Отсутствует
middlemouse.paste пишетКлассно, можешь еще сделать совместимость с кнопкой Edit Custom Button in Tab, сейчас в отдельном окне раскраска кода работает, а во вкладке раскраски нет.
Не могу, во вкладке этот модуль редактора не работает и выдает вот такую ошибку:
Error: SecurityError: The operation is insecure.
Source file: chrome://browser/content/devtools/orion.js
Line: 7105
Видимо, будет работать в Firefox 27:
https://bugzilla.mozilla.org/show_bug.cgi?id=816756
https://github.com/Infocatcher/Custom_Buttons/issues/17
https://github.com/Infocatcher/Custom_Buttons/issues/18
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Всем добрый день! Нужна кнопка для Custom Buttons, делающая нотариально заверенные скриншоты страниц. Подскажите в какую сторону копать или ткните носом, если такое уже есть.
Браузер должен сам решать свои проблемы, а не возлагать их на пользователей. Minor
Отсутствует
Здравствуйте! Помогите пожалуйста сделать кнопку проверки индексации страницы в Яндекс.
Суть проста, при нажатии на кнопку мы должны вводить в поиск следующий URL
url:www.ТЕКУЩИЙ-URL | url:ТЕКУЩИЙ-URL
В поисковой строке это выглядит примерно так: http://yandex.ru/yandsearch?text= далеее тот запрос, что написан выше
Ранее Вы сделали аналогичную кнопку для добавления страницы в AddURL, вот ее код:
loadURI("http://webmaster.yandex.ru/addurl.xml?url=" + encodeURIComponent(content.location.href))
Т.е. в этом случае все тоже самое, но нужно проверить с www. и без.
Помогите пожалуйста!
Отредактировано Sekotka (28-09-2013 15:32:19)
Отсутствует
Подскажите, как добавить новую загрузку во встроенный менеджер загрузок:
так чтобы потом можно было запустить/остановить скачку, открыть папку назначения
Отсутствует
Спасибо! Но немного не работает!
Вместо
Необходимо применить
Ну с этим проблем нет. Проблема в том, что на примере данной страницы, ссылка выглядит так:
http://yandex.ru/yandsearch?text=http%3A%2F%2Fforum.mozilla-russia.org%2Fviewtopic.php%3Fid%3D9591%26p%3D309%20|%20http%3A%2F%2Fforum.mozilla-russia.org%2Fviewtopic.php%3Fid%3D9591%26p%3D309&lr=213 -- Сам запрос в поле: http://forum.mozilla-russia.org/viewtopic.php?id=9591&p=309 | http://forum.mozilla-russia.org/viewtopic.php?id=9591&p=309 [b](пропал www еще)[/b]
А должна выглядеть так:
http://yandex.ru/yandsearch?text=url%3Awww.forum.mozilla-russia.org%2fviewtopic.php%3fid%3d9591%26p%3d309%20|%20url%3Aforum.mozilla-russia.org%2fviewtopic.php%3fid%3d9591%26p%3d309&lr=213 --- Сам запрос в поле url:www.forum.mozilla-russia.org/viewtopic.php?id=9591&p=309 | url:forum.mozilla-russia.org/viewtopic.php?id=9591&p=309
Т.е. необходимо убрать у каждой части http:// и вместо него добавить url: + наблюдается проблема с www
Спасибо за помощь!
Отредактировано Sekotka (29-09-2013 12:22:35)
Отсутствует
Всем добрый день! Нужна кнопка для Custom Buttons, делающая нотариально заверенные скриншоты страниц. Подскажите в какую сторону копать или ткните носом, если такое уже есть.
Нашёл кнопку с нужным функционалом, но она не работает
this.changeCase = function(evt) { if(evt.shiftKey || evt.button==1) { this.showPopup(this); return; } switch(evt.button) { case 0: var win = window.content; var w = win.document.width; var h = win.document.height; var pos = document.getElementById('status-bar'); var scrollbox = document.createElement('scrollbox'); scrollbox.width = '1'; scrollbox.height = '1'; pos.appendChild(scrollbox); var canvas = win.document.createElement('canvas'); canvas.style.display = 'inline'; canvas.width = w; canvas.height = h; scrollbox.appendChild(canvas); var ctx = canvas.getContext("2d"); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.save(); ctx.scale(1.0, 1.0); ctx.drawWindow(win, 0, 0, w, h, "rgb(255,255,255)"); ctx.restore(); var url = canvas.toDataURL("image/png"); const IO_SERVICE = Components.classes['@mozilla.org/network/io-service;1'] .getService(Components.interfaces.nsIIOService); url = IO_SERVICE.newURI(url, null, null); var fp = Components.classes['@mozilla.org/filepicker;1'] .createInstance(Components.interfaces.nsIFilePicker); fp.init(window, "Save Screenshot As", fp.modeSave); fp.appendFilters(fp.filterImages); fp.defaultExtension = "png"; fp.defaultString = win.document.title + ".png"; if ( fp.show() == fp.returnCancel || !fp.file ) return; var wbp = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1'] .createInstance(Components.interfaces.nsIWebBrowserPersist); wbp.saveURI(url, null, null, null, null, fp.file); pos.removeChild(scrollbox); break; case 1: this.showPopup(this); break; case 2: loadURI(<![CDATA[javascript:pdf_url=location.href;location.href='http://pdfmyurl.com?url='+escape(pdf_url)]]>); }} this.showPopup = function(node) { var popup = document.getElementById("custombuttons-contextpopup"); var x = node.boxObject.x; var y = node.boxObject.y + node.boxObject.height; document.popupNode = node; popup.showPopup(node, x, y, "popup", null, null); } this.setAttribute("onclick", "this.changeCase(event);"); this.setAttribute("context", ""); this.tooltipText = "L = Save web page as PNG \nM = CB Menu \nR = Save web page as PDF";
Браузер должен сам решать свои проблемы, а не возлагать их на пользователей. Minor
Отсутствует
W@ld_Lii
Save page as PNG / PDF
Отредактировано bunda1 (29-09-2013 22:22:48)
Отсутствует
bunda1, ещё вопрос можно по этой кнопке?
Скриншот делается с прозрачной полосой справа на месте скроллбара. Это можно устранить или проще забить?
Браузер должен сам решать свои проблемы, а не возлагать их на пользователей. Minor
Отсутствует
bunda1, ещё вопрос можно по этой кнопке?
Скриншот делается с прозрачной полосой справа на месте скроллбара. Это можно устранить или проще забить?
Не знаю как устранить
Отсутствует
Скриншот делается с прозрачной полосой справа на месте скроллбара. Это можно устранить или проще забить?
Можно попробовать задать флаги для CanvasRenderingContext2D.drawWindow().
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Караул , заметил глюк на FF24 + custombuttons-0.0.5.7pre1-20130923
Если в кнопке которое открывает меню есть строка this.type = "menu-button" код кнопки инициализируется два раза и все обработчики дублируются. Вот пример:
alert("1"); const searchbar = document.getElementById("searchbar"); const searchContainer = document.getElementById("search-container"); // Добавить контекстное меню с поисковиками для кнопки ................................ function searchService() { return Components.classes["@mozilla.org/browser/search-service;1"].getService(Components.interfaces.nsIBrowserSearchService); } _a = searchService(); 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" ) { while( aNode.firstChild && aNode.firstChild != managerSeparator ) { 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", "event.preventDefault(); event.stopPropagation(); parentNode.parentNode.selectEngine(parentNode.parentNode, event)"); aNode.insertBefore( mi, aNode.firstChild ); } var engines = gBrowser.mCurrentBrowser.engines; if ( !(engines && engines.length) ) return; var sep = document.createElement("menuseparator"); sep.id = "cb-search-addengine-separator"; aNode.insertBefore( sep, managerSeparator ); for ( var i = 0; i < engines.length; i++) { var engine = engines[i]; var menuitem = document.createElement("menuitem"); menuitem.setAttribute("id", "cb-search-addengine-engine-" + (i + 1)); menuitem.setAttribute("class", "menuitem-iconic addengine-item"); menuitem.setAttribute("tooltiptext", engine.uri); menuitem.setAttribute("uri", engine.uri); menuitem.setAttribute("title", engine.title); menuitem.setAttribute("label", "Добавить «" + engine.title + "»"); if ( engine.icon) menuitem.setAttribute("src", engine.icon); var command = '\Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService)\ .addEngine( event.originalTarget.getAttribute("uri"), Ci.nsISearchEngine.DATA_XML,\ event.originalTarget.getAttribute("src"), true);' menuitem.setAttribute("oncommand", command); aNode.insertBefore(menuitem, managerSeparator); } }; 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 managerItem1 = mp.appendChild( document.createElement("menuitem") ); managerItem1.setAttribute("label", "Управление поисковыми системам"); managerItem1.setAttribute("oncommand", "openDialog('chrome://browser/content/search/engineManager.xul', " + "'engineManager', 'chrome, dialog=no')"); this.type = "menu-button"
Почему так и как исправыть?
Добавлено 30-09-2013 22:54:58
до
Выделить кодКод:
WebScreenShot.capture(win, 0, 0, win.innerWidth + win.scrollMaxX, win.innerHeight + win.scrollMaxY);после
Выделить кодКод:
WebScreenShot.capture(win, 0, 0, window.content.document.getElementsByTagName('body')[0].scrollWidth, win.innerHeight + win.scrollMaxY);
Это в какой кнопке ?
Отредактировано bunda1 (30-09-2013 22:54:58)
Отсутствует
Почему так
Рискну предположить, что вот
<binding id="menu-button-base" extends="chrome://global/content/bindings/button.xml#button-base"> <implementation implements="nsIDOMEventListener"> <constructor> this.init(); </constructor>
и как исправыть?
Пока фикс не случился, может быть в кнопке
this.type = "menu-button"; if (!this.hasAttribute("initialized")) this.init = Function();
Отсутствует
Пока фикс не случился, может быть в кнопке
скрытый текстВыделить кодКод:
this.type = "menu-button"; if (!this.hasAttribute("initialized")) this.init = Function();
Спасибо за объяснение и код
Было бы не плохо если кто бы написал про этот баг сюда mozdev.org - custombuttons: bugs
Добавлено 01-10-2013 19:15:35
okkamas_knife
А для пункта "Сохранить видимую часть страницы как PNG"?
Что за пункт, в кнопке Save или где?
Отредактировано bunda1 (01-10-2013 19:15:35)
Отсутствует
Было бы не плохо если кто бы написал про этот баг сюда mozdev.org - custombuttons: bugs
Да-да, было бы не плохо.
И, может быть, заодно про такой вот сущий пустяк - cbu.writeFile
Отсутствует
Если в кнопке которое открывает меню есть строка this.type = "menu-button" код кнопки инициализируется два раза и все обработчики дублируются.
Если мне память не изменяет, так было всегда. Когда меняется тип кнопки, меняется привязка и срабатывает её конструктор.
И, может быть, заодно про такой вот сущий пустяк - cbu.writeFile
Спасибо, исправлю.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Подскажите пожалуйста по моему вопросу. Все таки почти готова, осталось пару штрихов!
Отсутствует