Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№1010124-04-2016 16:32:55

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 48.0

Re: Custom Buttons

bunda1
Спасибо, понял.  Только действительно автопрокрутка немного другое. Может так и составить,  заменой автопрокрутки на инерцию. Например Шаг инерции ИМХО И подожди немного, может появится кто Акробатом пользуется и лучше подскажет. :)

Отсутствует

 

№1010224-04-2016 16:39:31

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1700
UA: Firefox 45.0

Re: Custom Buttons

bunda1, :) ну всем не угодишь.

Отредактировано Stakhovsky (24-04-2016 16:40:11)

Отсутствует

 

№1010325-04-2016 23:08:57

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 29.0

Re: Custom Buttons

rbfyec пишет

Последнее время при попытке вызвать слайдер - custombuttons.alertSlide("Ок", " ") - стала спонтанно появляться ошибка в консоли

Выделить код

Код:

Component returned failure code: 0x8057000a (NS_ERROR_XPC_BAD_CONVERT_NATIVE) [nsIAlertsService.showAlertNotification]

C чем это может быть связано?

А спрошу-ка  я ещё раз.
Потому что слайдер здорово помогает при отладке вместо алертов. Без него плохо.

Отсутствует

 

№1010426-04-2016 18:14:48

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1700
UA: Firefox 45.0

Re: Custom Buttons

Помогите пожалуйста достать из набора кнопок 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)

Отсутствует

 

№1010526-04-2016 18:36:50

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 49.0

Re: Custom Buttons

Stakhovsky
WebScreenShot.onImage - это функция из кнопки Save+. Конечно она не будет работать. Вон там кнопка от Dumby только с нужной вам функцией.

Добавлено 26-04-2016 18:38:30
rbfyec
У меня нет такой ошибки и все работает. CB последняя?

Отредактировано turbot (26-04-2016 18:38:30)

Отсутствует

 

№1010626-04-2016 19:25:57

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1700
UA: Firefox 45.0

Re: Custom Buttons

turbot
WebScreenShot.onImage - это функция из кнопки Save+. Конечно она не будет работать. Вон там кнопка от Dumby только с нужной вам функцией.

Блин, как я не нашел. Спасибо.

Если не трудно, вы бы не могли добавить код с кнопки Save+?
Что бы была такая функиця в контекстном меню вместо пункта Соpy image as 64

// Запомнить изображение как base64 если нажать правой kлавышей мыши в контекстном меню на пункт 'Сохранить изображение как' ................

Отредактировано Stakhovsky (26-04-2016 21:33:09)

Отсутствует

 

№1010726-04-2016 21:21:22

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

rbfyec пишет

Потому что слайдер здорово помогает при отладке вместо алертов. Без него плохо.

У меня работает на FF24 и FF46.

Отсутствует

 

№1010826-04-2016 21:34:50

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 48.0

Re: Custom Buttons

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. ПКМ по копировать изображение/показать фоновое изображение.

Отсутствует

 

№1010926-04-2016 21:37:51

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1700
UA: Firefox 45.0

Re: Custom Buttons

turbot
Очень нужно, спасибо большое. Именно то что нет лишнего пункта в меню(т.к. не часто использую) очень радует:), спасибо.

Добавлено 26-04-2016 21:42:50

turbot
ПКМ по копировать изображение/показать фоновое изображение.

У меня что то нет пункта Копировать изображение в контекстном меню.
Я думал ПКМ по Сохранить изображение как...

Отредактировано Stakhovsky (26-04-2016 21:46:01)

Отсутствует

 

№1011026-04-2016 21:55:39

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 49.0

Re: Custom Buttons

Stakhovsky пишет

У меня что то нет пункта Копировать изображение в контекстном меню.

Может в русской локали по другому называется. Это я наугад перевел "Copy Image". #context-copyimage-contents - посмотрите DOM Inspector'ом.

Добавлено 26-04-2016 21:57:10

Stakhovsky пишет

Я думал ПКМ по Сохранить изображение как...

Да ради бога, поменяйте context-copyimage-contents, в коде, на context-saveimage.

Отредактировано turbot (26-04-2016 21:57:10)

Отсутствует

 

№1011126-04-2016 22:58:40

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1700
UA: Firefox 45.0

Re: Custom Buttons

turbot
Да ради бога, поменяйте context-copyimage-contents, в коде, на context-saveimage.

:beer:

Отсутствует

 

№1011227-04-2016 11:28:25

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 29.0

Re: Custom Buttons

turbot пишет

rbfyec
У меня нет такой ошибки и все работает. CB последняя?

Да,  последняя.

bunda1 пишет
rbfyec пишет

Потому что слайдер здорово помогает при отладке вместо алертов. Без него плохо.

У меня работает на FF24 и FF46.

У меня тоже работает, работает, а потом перестаёт.
Оказывается, это баг https://bugzilla.mozilla.org/show_bug.cgi?id=873590 ещё с 22 версии.
У меня 29 и в ней этот баг ещё имеет место быть.

Отредактировано rbfyec (27-04-2016 11:32:55)

Отсутствует

 

№1011330-04-2016 12:32:32

emlen
Участник
 
Группа: Members
Зарегистрирован: 22-05-2015
Сообщений: 201
UA: unknown 0.0

Re: Custom Buttons

Доброго! А кто знает, нет готовой реализации поиска по закладкам из стандартного поля ввода поиска(тот который BrowserSearch.searchBar)?


SeaMonkey 2.39 forever

Отсутствует

 

№1011401-05-2016 06:21:17

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 49.0

Re: Custom Buttons

emlen
В урлбаре можно ввести * и будет поиск по закладкам. :rolleyes:

Для лентяев и склеротиков, вроде меня, пункт для контекстного меню адресной строки, подставляющий модификаторы поиска (вытащено из аддона "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)

Отсутствует

 

№1011503-05-2016 01:51:07

emlen
Участник
 
Группа: Members
Зарегистрирован: 22-05-2015
Сообщений: 201
UA: unknown 0.0

Re: Custom Buttons

turbot пишет

emlen
В урлбаре можно ввести * и будет поиск по закладкам. :rolleyes:

Для лентяев и склеротиков, вроде меня, пункт для контекстного меню адресной строки, подставляющий модификаторы поиска (вытащено из аддона "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

Отсутствует

 

№1011603-05-2016 02:47:09

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 49.0

Re: Custom Buttons

emlen
Наверное можно. Если никто не подска.ет раньше, завтра скачаю посмотрю.

Да и что-то со звездой у меня по выбранному умолчальному поиску ищет...(

Хм, а какой у вас символ в browser.urlbar.restrict.bookmark выставлен? Или в симанки вообще нет параметра? Тогда и кнопку делать бессмысленно.

Отсутствует

 

№1011703-05-2016 04:03:05

yup
Участник
 
Группа: Members
Зарегистрирован: 15-04-2016
Сообщений: 1090
UA: Seamonkey 2.40

Re: Custom Buttons

turbot пишет

Или в симанки вообще нет параметра? Тогда и кнопку делать бессмысленно.

Если руками настройки не корёжить, то там прописаны:

bookmark - *
history - ^
openpage - %
tag - +
typed - ~

Отсутствует

 

№1011803-05-2016 07:19:16

ma3ca
Участник
 
Группа: Members
Зарегистрирован: 15-02-2009
Сообщений: 54
UA: Firefox 46.0

Re: Custom Buttons

Подскажите, плз, кнопку для форумов вставлять тег URL.
Чтобы получилось такое:

Выделить код

Код:

[url=ссылка в буфере обмена]выделенный текст в форме написания ответа[/url]

Отсутствует

 

№1011903-05-2016 09:05:13

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 49.0

Re: Custom Buttons

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]';
  }
})();

Отсутствует

 

№1012003-05-2016 10:29:37

ma3ca
Участник
 
Группа: Members
Зарегистрирован: 15-02-2009
Сообщений: 54
UA: Firefox 46.0

Re: Custom Buttons

turbot пишет

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]';
  }
})();

Спасибо!!!!!!! Работает! :)

Отсутствует

 

№1012103-05-2016 12:09:15

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 47.0

Re: Custom Buttons

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);
})();

Отсутствует

 

№1012203-05-2016 14:02:52

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 38.0

Re: Custom Buttons

turbot пишет

Во вкладку "код":

Что-то всё невыделенное содержимое пропадает :/.
Может чуть лучше так (потестируй)

скрытый текст

Выделить код

Код:

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);

Отсутствует

 

№1012303-05-2016 17:08:01

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 49.0

Re: Custom Buttons

Dumby пишет

Что-то всё невыделенное содержимое пропадает :/.

Ох ты ж!.. :dumb: Спасибо.

Vitaliy V.
Пока не смотрел, но спасибо. Пусть уж сразу emlen проверит.

Отсутствует

 

№1012403-05-2016 17:17:28

emlen
Участник
 
Группа: Members
Зарегистрирован: 22-05-2015
Сообщений: 201
UA: unknown 0.0

Re: Custom Buttons

Vitaliy V., turbot, спасибо большое! Все круто!))


SeaMonkey 2.39 forever

Отсутствует

 

№1012503-05-2016 19:35:04

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 49.0

Re: Custom Buttons

Dumby
Не заглянете? shuffle.gif

Уже не нужно. :)

Отредактировано turbot (05-05-2016 04:14:29)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]