bunda1
Спасибо, понял. Только действительно автопрокрутка немного другое. Может так и составить, заменой автопрокрутки на инерцию. Например Шаг инерции ИМХО И подожди немного, может появится кто Акробатом пользуется и лучше подскажет.
Отсутствует
Последнее время при попытке вызвать слайдер - custombuttons.alertSlide("Ок", " ") - стала спонтанно появляться ошибка в консоли
Выделить кодКод:
Component returned failure code: 0x8057000a (NS_ERROR_XPC_BAD_CONVERT_NATIVE) [nsIAlertsService.showAlertNotification]C чем это может быть связано?
А спрошу-ка я ещё раз.
Потому что слайдер здорово помогает при отладке вместо алертов. Без него плохо.
Отсутствует
Помогите пожалуйста достать из набора кнопок Save+, одну функцию.
Хотел сначала пункт в контекстное меню Запомнить изображение как base64, в контекстном меню
Копался сам, хотел оставить только нужное, не получается.
Но обнаружил в коде лучший вариант:
// Запомнить изображение как base64 если нажать правой kлавышей мыши в контекстном меню на пункт 'Сохранить изображение как' ................ function handleClick(e) { if ( e.button !== 2 ) return; WebScreenShot.onImage( gContextMenu.target ); document.getElementById("contentAreaContextMenu").hidePopup(); }; addEventListener("click", handleClick, false, document.getElementById("context-saveimage") );
Оставил только этот код в кнопке - не работает. Помогите плиз.
Отредактировано Stakhovsky (26-04-2016 18:25:51)
Отсутствует
Stakhovsky
WebScreenShot.onImage - это функция из кнопки Save+. Конечно она не будет работать. Вон там кнопка от Dumby только с нужной вам функцией.
Добавлено 26-04-2016 18:38:30
rbfyec
У меня нет такой ошибки и все работает. CB последняя?
Отредактировано turbot (26-04-2016 18:38:30)
Отсутствует
turbot
WebScreenShot.onImage - это функция из кнопки Save+. Конечно она не будет работать. Вон там кнопка от Dumby только с нужной вам функцией.
Блин, как я не нашел. Спасибо.
Если не трудно, вы бы не могли добавить код с кнопки Save+?
Что бы была такая функиця в контекстном меню вместо пункта Соpy image as 64
// Запомнить изображение как base64 если нажать правой kлавышей мыши в контекстном меню на пункт 'Сохранить изображение как' ................
Отредактировано Stakhovsky (26-04-2016 21:33:09)
Отсутствует
Stakhovsky
Может уже не нужно, но вот из кнопки Dumby:
(()=> { var stream = Cc["@mozilla.org/binaryinputstream;1"].createInstance(Ci.nsIBinaryInputStream); var mimeService = Cc["@mozilla.org/mime;1"].getService(Ci.nsIMIMEService); for (var mItem of [document.getElementById("context-copyimage-contents"), document.getElementById("context-viewbgimage")]) { mItem.setAttribute("oncontextmenu", "event.preventDefault(); event.stopPropagation(); this.handleCommand(); hidePopup();"); mItem.handleCommand = () => { var array = [], uri = makeURI(gContextMenu.imageURL || gContextMenu.bgImageURL); var channel = Services.io.newChannelFromURI(uri); channel.loadFlags |= channel.LOAD_FROM_CACHE; channel.asyncOpen({ onStartRequest: () => {}, onDataAvailable: (request, context, istream, offset, count) => { stream.setInputStream(istream); array = array.concat(stream.readByteArray(count)); }, onStopRequest: () => { var contentType = "image/png"; try {contentType = channel.contentType;} catch(ex) { try {contentType = mimeService.getTypeFromURI(uri);} catch(ex2) {} } var step = 500000, str = "", base64; while(array.length) str += String.fromCharCode.apply(null, array.splice(0, step)) base64 = "data:" + contentType + ";base64," + btoa(str) gClipboard.write(base64) Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService).showAlertNotification(base64, "Изображение скопировано как base64!", '', false, "", null, ""); } }, null); } } })();
Она копирует не с конвертацией в png, как save+, а с оригинальным mimetype, и работает на background-image. ПКМ по копировать изображение/показать фоновое изображение.
Отсутствует
turbot
Очень нужно, спасибо большое. Именно то что нет лишнего пункта в меню(т.к. не часто использую) очень радует, спасибо.
Добавлено 26-04-2016 21:42:50
turbot
ПКМ по копировать изображение/показать фоновое изображение.
У меня что то нет пункта Копировать изображение в контекстном меню.
Я думал ПКМ по Сохранить изображение как...
Отредактировано Stakhovsky (26-04-2016 21:46:01)
Отсутствует
У меня что то нет пункта Копировать изображение в контекстном меню.
Может в русской локали по другому называется. Это я наугад перевел "Copy Image". #context-copyimage-contents - посмотрите DOM Inspector'ом.
Добавлено 26-04-2016 21:57:10
Я думал ПКМ по Сохранить изображение как...
Да ради бога, поменяйте context-copyimage-contents, в коде, на context-saveimage.
Отредактировано turbot (26-04-2016 21:57:10)
Отсутствует
rbfyec
У меня нет такой ошибки и все работает. CB последняя?
Да, последняя.
rbfyec пишетПотому что слайдер здорово помогает при отладке вместо алертов. Без него плохо.
У меня работает на FF24 и FF46.
У меня тоже работает, работает, а потом перестаёт.
Оказывается, это баг https://bugzilla.mozilla.org/show_bug.cgi?id=873590 ещё с 22 версии.
У меня 29 и в ней этот баг ещё имеет место быть.
Отредактировано rbfyec (27-04-2016 11:32:55)
Отсутствует
emlen
В урлбаре можно ввести * и будет поиск по закладкам.
Для лентяев и склеротиков, вроде меня, пункт для контекстного меню адресной строки, подставляющий модификаторы поиска (вытащено из аддона "Location Bar Characters"):
(function() { if ( document.getElementById("lbc") ) return; var urlbar = window.document.getElementById("urlbar"), textBox = window.document.getAnonymousElementByAttribute(urlbar, "anonid", "textbox-input-box"), cxmenu = window.document.getAnonymousElementByAttribute(textBox, "anonid", "input-box-contextmenu"), separator = document.createElement("menuseparator"), menu = document.createElement("menu"), popup = document.createElement("menupopup"), i, labelArray = [ "^ History", "* Bookmarks", "+ Pages You've Tagged", "% Currently Open Tabs", "~ Pages You've Typed", "# Page Titles", "@ Web Addresses (URLs)" ], insertCharacters = function(sym) { var urlbar = window.document.getElementById("urlbar"), urlbarText = urlbar.value, pos, urlbarFocus = window.document.getElementById("Browser:OpenLocation"); urlbarFocus.doCommand(); if (urlbarText.length === 0) { urlbarText = sym + " "; } else if (urlbarText.slice(-1) === " ") { urlbarText = urlbarText + sym + " "; } else { urlbarText = urlbarText + " " + sym + " "; } urlbar.value = urlbarText; pos = urlbarText.length; urlbar.setSelectionRange(pos, pos); urlbar.editor.deleteSelection(0, 0); }, makeMenuItem = function(label) { var sym = label.slice(0, 1), node = document.createElement("menuitem"); node.setAttribute("label", label); node.addEventListener("command", function() { insertCharacters(sym); }, false); popup.appendChild(node); }; menu.setAttribute("label", "Insert ^ * + % ~ # @" ); menu.id = "lbc"; menu.appendChild(popup); for (i = 0; i < labelArray.length; i += 1) { makeMenuItem(labelArray[i]); } cxmenu.appendChild(separator); cxmenu.appendChild(menu); })();
Отредактировано turbot (01-05-2016 06:25:50)
Отсутствует
emlen
В урлбаре можно ввести * и будет поиск по закладкам.Для лентяев и склеротиков, вроде меня, пункт для контекстного меню адресной строки, подставляющий модификаторы поиска (вытащено из аддона "Location Bar Characters"):
скрытый текстВыделить кодКод:
(function() { if ( document.getElementById("lbc") ) return; var urlbar = window.document.getElementById("urlbar"), textBox = window.document.getAnonymousElementByAttribute(urlbar, "anonid", "textbox-input-box"), cxmenu = window.document.getAnonymousElementByAttribute(textBox, "anonid", "input-box-contextmenu"), separator = document.createElement("menuseparator"), menu = document.createElement("menu"), popup = document.createElement("menupopup"), i, labelArray = [ "^ History", "* Bookmarks", "+ Pages You've Tagged", "% Currently Open Tabs", "~ Pages You've Typed", "# Page Titles", "@ Web Addresses (URLs)" ], insertCharacters = function(sym) { var urlbar = window.document.getElementById("urlbar"), urlbarText = urlbar.value, pos, urlbarFocus = window.document.getElementById("Browser:OpenLocation"); urlbarFocus.doCommand(); if (urlbarText.length === 0) { urlbarText = sym + " "; } else if (urlbarText.slice(-1) === " ") { urlbarText = urlbarText + sym + " "; } else { urlbarText = urlbarText + " " + sym + " "; } urlbar.value = urlbarText; pos = urlbarText.length; urlbar.setSelectionRange(pos, pos); urlbar.editor.deleteSelection(0, 0); }, makeMenuItem = function(label) { var sym = label.slice(0, 1), node = document.createElement("menuitem"); node.setAttribute("label", label); node.addEventListener("command", function() { insertCharacters(sym); }, false); popup.appendChild(node); }; menu.setAttribute("label", "Insert ^ * + % ~ # @" ); menu.id = "lbc"; menu.appendChild(popup); for (i = 0; i < labelArray.length; i += 1) { makeMenuItem(labelArray[i]); } cxmenu.appendChild(separator); cxmenu.appendChild(menu); })();
Спасибо, а можно сей код адаптировать под мою симанку? Да и что-то со звездой у меня по выбранному умолчальному поиску ищет...(
Отредактировано emlen (03-05-2016 01:54:17)
SeaMonkey 2.39 forever
Отсутствует
emlen
Наверное можно. Если никто не подска.ет раньше, завтра скачаю посмотрю.
Да и что-то со звездой у меня по выбранному умолчальному поиску ищет...(
Хм, а какой у вас символ в browser.urlbar.restrict.bookmark выставлен? Или в симанки вообще нет параметра? Тогда и кнопку делать бессмысленно.
Отсутствует
Подскажите, плз, кнопку для форумов вставлять тег URL.
Чтобы получилось такое:
Отсутствует
ma3ca
Во вкладку "код":
(()=> { var theBox = document.commandDispatcher.focusedElement; if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selection = theBox.value.substring(startPos, endPos); theBox.value = '[url=' + gClipboard.read() + ']' + selection + '[/url]'; } })();
Отсутствует
ma3ca
Во вкладку "код":Выделить кодКод:
(()=> { var theBox = document.commandDispatcher.focusedElement; if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selection = theBox.value.substring(startPos, endPos); theBox.value = '[url=' + gClipboard.read() + ']' + selection + '[/url]'; } })();
Спасибо!!!!!!! Работает!
Отсутствует
emlen
turbot
Для SeaMonkey так попробуйте вроде работает (но я CB в основном не пользуюсь)
(function() { if ( document.getElementById("LocationBarCharacter") ) return; var urlbar = window.document.getElementById("urlbar"), textBox = window.document.getAnonymousElementByAttribute(urlbar, "class", "textbox-input-box paste-and-go"), cxmenu = window.document.getAnonymousElementByAttribute(textBox, "anonid", "input-box-contextmenu"), separator = document.createElement("menuseparator"), menu = document.createElement("menu"), popup = document.createElement("menupopup"), i, labelArray = [ "^ History", "* Bookmarks", "+ Pages You've Tagged", "% Currently Open Tabs", "~ Pages You've Typed", "# Page Titles", "@ Web Addresses (URLs)" ], insertCharacters = function(sym) { var urlbar = window.document.getElementById("urlbar"), urlbarText = urlbar.value, pos, urlbarFocus = window.document.getElementById("focusURLBar"); urlbarFocus.doCommand(); if (urlbarText.length === 0) { urlbarText = sym + " "; } else if (urlbarText.slice(-1) === " ") { urlbarText = urlbarText + sym + " "; } else { urlbarText = urlbarText + " " + sym + " "; } urlbar.value = urlbarText; pos = urlbarText.length; urlbar.setSelectionRange(pos, pos); urlbar.editor.deleteSelection(0, 0); }, makeMenuItem = function(label) { var sym = label.slice(0, 1), node = document.createElement("menuitem"); node.setAttribute("label", label); node.addEventListener("command", function() { insertCharacters(sym); }, false); popup.appendChild(node); }; menu.setAttribute("label", "Insert ^ * + % ~ # @" ); menu.id = "LocationBarCharacter"; menu.appendChild(popup); for (i = 0; i < labelArray.length; i += 1) { makeMenuItem(labelArray[i]); } cxmenu.appendChild(separator); cxmenu.appendChild(menu); })();
Отсутствует
Во вкладку "код":
Что-то всё невыделенное содержимое пропадает .
Может чуть лучше так (потестируй)
var url = gClipboard.read().trim(); if (!url) return; try {makeURI(url);} catch(ex) {return;} var br = gBrowser.selectedBrowser; if (document.activeElement != br) return; function insert(url) { var elm = Services.focus.focusedElement; if (!elm || !("editor" in elm) || elm.hasAttribute("readonly")) return; var editor = elm.editor.QueryInterface(Components.interfaces.nsIPlaintextEditor); editor.selection.isCollapsed || editor.insertText("[url=" + url + "]" + editor.selection + "[/url]"); } br.isRemoteBrowser ? br.messageManager.loadFrameScript( `data:,(${encodeURIComponent(insert + ')("' + url + '");')}`, false ) : insert(url);
Отсутствует
Dumby
Не заглянете?
Уже не нужно.
Отредактировано turbot (05-05-2016 04:14:29)
Отсутствует