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

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№805111-10-2014 19:02:13

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 24.0

Re: Custom Buttons

Возможно ли решить вот такое с помощью CB?
у меня в настройках FF установлено, что все файлы типа torrent должны просто сохраняться на диск:
5dd75d18d44e.jpg
но мне нужно ещё сделать так, чтобы при долгом нажатии по ссылке на него, он открывался сразу в uTorrent. Как-будто в настройках выставлено вот так:
e6faf04dabbc.jpg
Можно чего-нибудь придумать?

Отсутствует

 

№805213-10-2014 10:12:48

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

Re: Custom Buttons

villa7 пишет

Подскажите кто знает. Хочу посадить на жест CB Mouse Gestures+ открытие PanelUI. Вроде открывает, но дополнительно вылазят ещё панели. Что с этим кодом не так?

Выделить код

Код:

cmd:function(){document.getElementById("PanelUI-popup").openPopup(null,"",350,150,false,false);}}

Я попробовал твой код на CB Mouse Gestures+ и у меня всё нормально а что это за панель
дополнительная, откуда?

Отсутствует

 

№805313-10-2014 11:14:09

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

Re: Custom Buttons

bunda1

а что это за панель
дополнительная, откуда?

Профиль чистый, без доп.панелей, а выскакивает панель с таким id=customizationPanelItemContextMenu. И ещё, почему-то жест срабатывает только после того как нажмешь на кнопку меню, иначе не хочет.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№805413-10-2014 12:31:19

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

Re: Custom Buttons

villa7 пишет

Профиль чистый, без доп.панелей, а выскакивает панель с таким id=customizationPanelItemContextMenu. И ещё, почему-то жест срабатывает только после того как нажмешь на кнопку меню, иначе не хочет.

:D:D:D

Выделить код

Код:

var panel = document.getElementById("PanelUI-popup");
panel.hidden = false;
panel.openPopup(null,"",350,150,false,false);

или

Выделить код

Код:

var panel = document.getElementById("PanelUI-popup"); document.getElementById("PanelUI-menu-button").click(); setTimeout(function() panel.moveTo(350,150), 50);

или

Выделить код

Код:

var panel = document.getElementById("PanelUI-popup");
if ( panel.hidden ) { document.getElementById("PanelUI-menu-button").click(); setTimeout(function() panel.moveTo(350,150), 50) } 
else
     panel.openPopup(null,"",350,150,false,false);

Отредактировано bunda1 (13-10-2014 23:47:06)

Отсутствует

 

№805513-10-2014 14:09:39

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

Re: Custom Buttons

bunda1
Прикольно:)
a2af503b4a1642bc20fa77b79e854650.jpeg
Всё равно вылазит доп.панель, оставил средний вариант.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№805613-10-2014 14:36:23

SOTVM
Участник
 
Группа: Members
Зарегистрирован: 30-01-2012
Сообщений: 112
UA: Firefox 32.0

Re: Custom Buttons

как можно сделать (или может уже такое есть)
нужна кнопка чтобы копировала содержимое адресной строки в файл
раньше пользовал linkreader ,но он только под винду заточен ,а мне нужно под linux


Никто не знает столько,сколько не знаю Я.

Отсутствует

 

№805713-10-2014 14:55:57

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

Re: Custom Buttons

villa7 пишет

Всё равно вылазит доп.панель, оставил средний вариант.

Выделить код

Код:

var panel = document.getElementById("PanelUI-popup");
var contextMenu = document.getElementById("customizationPanelItemContextMenu")
contextMenu.hidden = true;
document.getElementById("PanelUI-menu-button").click();
setTimeout(function() panel.moveTo(350,150), 50); 
contextMenu.hidden = false;

Отсутствует

 

№805813-10-2014 15:10:50

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

Re: Custom Buttons

bunda1
Теперь нормально. Спасибо!


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№805913-10-2014 15:44:17

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

Re: Custom Buttons

sotvictor пишет

как можно сделать (или может уже такое есть)
нужна кнопка чтобы копировала содержимое адресной строки в файл
раньше пользовал linkreader ,но он только под винду заточен ,а мне нужно под linux

А что за файл и как сохранить с запросом или куда?

Отсутствует

 

№806013-10-2014 21:17:35

hartumov
Участник
 
Группа: Members
Зарегистрирован: 17-11-2013
Сообщений: 136
UA: Firefox 25.0

Re: Custom Buttons

У меня к gBrowser приделан EventListener на событие DOMContentLoaded. Он запускает нужную функцию, все  ОК.
Вопрос: это при каждом обновлении страницы будет добавляться еще один EventListener?
Надо ли их удалять?
И вообще, в каких случаях надо листенер удалять,  а когда не надо?


И ещё вопрос. Функцией open('', '', 'параметры') я открываю окошко. Я хочу кликом в этом окошке делать определенное действие в родительском окне.
А как обратиться к родительскому окну? Я пробовал проверить мое_окошко.opener.location - оно мне показывает chrome://browser/content/browser.xul

Что это за адрес?

Отсутствует

 

№806113-10-2014 21:42:46

pofigist
Участник
 
Группа: Members
Зарегистрирован: 22-01-2014
Сообщений: 22
UA: Chrome 37.0

Re: Custom Buttons

Inko7

Inko7 пишет

...все файлы типа torrent должны просто сохраняться на диск

Inko7 пишет

...при долгом нажатии по ссылке на него, он открывался сразу в uTorrent

у меня была такая же проблема, только обратная: всегда открывал в уторренте, а иногда требовалось сохранить торрент-файл на диск ;)
для себя решил это так: в настройках браузера, в закладке "приложения", для этого типа файла выставил режим "Всегда спрашивать". Теперь каждый раз спрашивает действие. Слегка геморно, но по другому никак.
Если знатоки-кнопкописатели все-таки смогут как-то изменять действие для типа файла "на лету", то будет просто здорово!

Добавлено 13-10-2014 21:45:25
Оффтоп:
bunda1
С юбилеем в 3000 постов!!!

Отредактировано pofigist (13-10-2014 21:45:25)

Отсутствует

 

№806213-10-2014 22:47:21

Pony_Smile_Pack
Участник
 
Группа: Members
Зарегистрирован: 13-01-2012
Сообщений: 1144
UA: Firefox 32.0

Re: Custom Buttons

bunda1, можно как-то настроить чтобы PanelUI-menu-button в твоём коде (№8979) появлялась в том месте, где закончился жест?
а то у меня в FireGestures она всплывает всегда в левом верхнем участке экрана

Отсутствует

 

№806313-10-2014 23:40:19

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

Re: Custom Buttons

Pony_Smile_Pack пишет

можно как-то настроить чтобы PanelUI-menu-button в твоём коде (№8979) появлялась в том месте, где закончился жест?
а то у меня в FireGestures она всплывает всегда в левом верхнем участке экрана

В FireGestures есть же своя схема Открыть меню в Диалоговый тип отлично открывает и всегда у курсора, что не устраивает?

Отсутствует

 

№806413-10-2014 23:51:55

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

Re: Custom Buttons

Pony_Smile_Pack пишет

bunda1, можно как-то настроить чтобы PanelUI-menu-button в твоём коде (№8979) появлялась в том месте, где закончился жест?
а то у меня в FireGestures она всплывает всегда в левом верхнем участке экрана

Если ты про этот код:

Выделить код

Код:

var panel = document.getElementById("PanelUI-popup"); document.getElementById("PanelUI-menu-button").click(); setTimeout(function() panel.moveTo(350,150), 50);

то он должен открывать в центре странице.

pofigist пишет

bunda1
С юбилеем в 3000 постов!!!

:)

Отсутствует

 

№806513-10-2014 23:55:46

Pony_Smile_Pack
Участник
 
Группа: Members
Зарегистрирован: 13-01-2012
Сообщений: 1144
UA: Firefox 32.0

Re: Custom Buttons

bunda1 пишет

то он должен открывать в центре странице.

Ну у меня не в центре.

Удобно когда делаешь жест, продолжить движение на всплывающее меню.

Отсутствует

 

№806614-10-2014 09:21:31

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 24.0

Re: Custom Buttons

pofigist

pofigist пишет

выставил режим "Всегда спрашивать"

мне так уже посоветовали и я переключился пока в этот режим
но по мне, выбирать каждый раз слегка напрягает...
моё соотношение скачать торрент и открыть торрент где-то 70:30

okkamas_knife пишет

просто делай пкм по ссылке на торрент и выбирай сохранить объект как...

а можно ли так:
или в меню пкм по ссылке на торрент добавить строку открыть в uTorrent
или при долгом клике по ссылке открыть ее в uTorrent

Отсутствует

 

№806714-10-2014 10:15:47

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

Re: Custom Buttons

Pony_Smile_Pack пишет

а то у меня в FireGestures она всплывает всегда в левом верхнем участке экрана

Ну вот же:
1beda5866f72e1a724c30b79530aca22.jpg

Отсутствует

 

№806814-10-2014 11:22:04

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

Re: Custom Buttons

Inko7 пишет

а можно ли так:
или в меню пкм по ссылке на торрент добавить строку открыть в uTorrent
или при долгом клике по ссылке открыть ее в uTorrent

Долгом клике по ссылке не получится потому что не известно как различить ссылку на торрент. А вот через контекстное меню легко, вот:

Выделить код

Код:

// Добавить новый пункт "Открыть ссылку в uTorrent" в контекстном меню ссылок на странице, от 14.10.2014. 
(function() {
   var menuitem = document.createElement("menuitem");   
   menuitem.setAttribute("label", "Открыть ссылку в uTorrent");   
   var contextMenu = document.getElementById("contentAreaContextMenu")
   contextMenu.appendChild( menuitem );    
   addDestructor(function() contextMenu.removeChild( menuitem ) );
   addEventListener("popupshowing", function() menuitem.hidden = !gContextMenu.onLink, false, contextMenu );
     
   addEventListener("click", function(e) {
      var linkUrl = gContextMenu.getLinkURL();
      
      var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
      file.initWithPath("C:\\Program Files\\uTorrent\\uTorrent.exe");
      var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
      process.init( file );
      process.run( false, [linkUrl], 1 );
                    
   }, false, menuitem );
})();

P.S. проверь file.initWithPath("C:\\Program Files\\uTorrent\\uTorrent.exe");

Отредактировано bunda1 (14-10-2014 11:25:11)

Отсутствует

 

№806914-10-2014 12:26:44

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 24.0

Re: Custom Buttons

bunda1

bunda1 пишет

Долгом клике по ссылке не получится потому что не известно как различить ссылку на торрент

Да и не нужно её различать. Я буду просто знать, что долгий клик использовать только для ссылок на torrent-файлы. Просто так все-равно удобнее, чем через контекстное меню.

bunda1 пишет

вот через контекстное меню легко

да, так пункт появляется, но внизу меню, а хотелось бы в верхней группе пунктов

например, сразу под третьим пунктом
32eb06743a66.jpg

но самое главное и печальное то, что ссылка, отправляемая так в uTorrent не хочет добавляться как закачка, а хочет добавиться, как RSS-лента :(
Каким же образом тогда FF передает ссылку в uTorrent своими средствами?

Отсутствует

 

№807014-10-2014 12:44:21

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

Re: Custom Buttons

самое главное и печальное то, что ссылка, отправляемая так в uTorrent не хочет добавляться как закачка, а хочет добавиться, как RSS-лента

А ты на каком сайте качаешь, на RuTracker.org?

Да и не нужно её различать. Я буду просто знать, что долгий клик использовать только для ссылок на torrent-файлы. Просто так все-равно удобнее, чем через контекстное меню.

Сперва разберёмся как открыть ссылки.

да, так пункт появляется, но внизу меню, а хотелось бы в верхней группе пунктов

Выделить код

Код:

contextMenu.insertBefore( menuitem, document.getElementById("context-savelink") );

вместо

Выделить код

Код:

contextMenu.appendChild( menuitem );

Отредактировано bunda1 (14-10-2014 12:48:52)

Отсутствует

 

№807114-10-2014 12:51:55

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

Re: Custom Buttons

Inko7 пишет

или при долгом клике по ссылке открыть ее в uTorrent

На крайний случай, можно попробавать нечто весьма тупое.
mouseup, если задержался, — переключаем на «...(по умолчанию)»,
mousedown — переключаем на «Сохранить файл».

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

Выделить код

Код:

(() => {
    var obj = {
        delay: 500,

        stateSave: false,
        mousedownTime: 0,
        get ms() {
            delete this.ms;
            return this.ms = Cc["@mozilla.org/mime;1"].getService(Ci.nsIMIMEService);
        },
        get hs() {
            delete this.hs;
            return this.hs = Cc["@mozilla.org/uriloader/handler-service;1"].getService(Ci.nsIHandlerService);
        },
        get info() {
            delete this.info;
            var info = Object.create(this.ms.getFromTypeAndExtension("application/x-bittorrent", "torrent"));
            info.alwaysAskBeforeHandling = false;
            return this.info = info;
        },
        handleEvent: function(e) {
            if (e.button == 1 || e.detail != 1 || e.ctrlKey || e.shiftKey || e.altKey) return;
            this[e.type]();
        },
        mousedown: function() {
            this.mousedownTime = Date.now();
            this.stateSave || this.setState(true);
        },
        mouseup: function() {
            if (Date.now() - this.mousedownTime < this.delay) return;
            this.stateSave && this.setState();
        },
        setState: function(save) {
            if (save) {
                this.info.preferredAction = this.info.saveToDisk;
                this.stateSave = true;
            } else {
                this.info.preferredAction = this.info.useSystemDefault;
                this.stateSave = false;
            }
            this.hs.store(this.info);
        }
    };
    for(var type of ["mousedown", "mouseup"]) addEventListener(type, obj, false, gBrowser);
    addDestructor(obj.setState, obj);
})();

Отсутствует

 

№807214-10-2014 13:29:58

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 24.0

Re: Custom Buttons

bunda1

bunda1 пишет

А ты на каком сайте качаешь, на RuTracker.org?

использую различные трекеры (nnm-club.me, rutor.org, kinozal.tv) и рутрекер в том числе

bunda1 пишет

... вместо

все равно немного не там, ну да ладно...

Dumby

Dumby пишет

можно попробавать нечто весьма тупое

Как раз то, о чем я и просил!!! :)
Слегка не понял в коде, зачем там отслеживание СКМ?
А так все работает, как надо!!!
Простой ЛКМ - сразу диалог сохранения файла
Долгий - приглашение открыть файл

вот такое
1e8cba0bad77.jpg

хоть и стоит галка "Выполнять автоматически", но это окно появляется каждый раз. Его можно как-то пропустить?

Отсутствует

 

№807314-10-2014 15:56:21

hartumov
Участник
 
Группа: Members
Зарегистрирован: 17-11-2013
Сообщений: 136
UA: Firefox 25.0

Re: Custom Buttons

Ну а с моим вопросом как же?
https://forum.mozilla-russia.org/viewtopic.php?pid=664006#p664006

Отсутствует

 

№807414-10-2014 16:26:00

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

Re: Custom Buttons

Inko7 пишет

Слегка не понял в коде, зачем там отслеживание СКМ?

Это просто так, без смысла, если мешает — удали.

Inko7 пишет

хоть и стоит галка "Выполнять автоматически", но это окно появляется каждый раз. Его можно как-то пропустить?

Говорят, это из-за http-заголовка «Content-Disposition».
Вот, попробовал срисовать с расширения InlineDisposition.

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

Выделить код

Код:

(() => {
    const id = _id + "-" + Components.stack.lineNumber;
    if (Application.storage.get(id, null)) return;
    Application.storage.set(id, {});
    addDestructor(() => Application.storage.set(id, null));

    const topic = "http-on-examine-response";
    const cd = "Content-Disposition";
    var re = /^\s*attachment/i;
    function onResponse(channel) {
        try {
            channel.QueryInterface(Ci.nsIHttpChannel);
            var disp = channel.getResponseHeader(cd);
            channel.loadFlags & channel.LOAD_DOCUMENT_URI
            && channel.contentType == "application/x-bittorrent"
            && re.test(disp)
            && channel.setResponseHeader(cd, disp.replace(re, "inline"), false);
        } catch(ex) {}
    }
    Services.obs.addObserver(onResponse, topic, false);
    addDestructor(() => Services.obs.removeObserver(onResponse, topic));
})();

hartumov пишет

Ну а с моим вопросом как же?

Вопрос не сопровождается примерами кода. Это нехорошо.

А насчёт адреса — сделай так: открой новую вкладку,
вставь этот адрес в адресную строку и нажми enter.
Возможно содержимое вкладки покажется тебе знакомым.

Отсутствует

 

№807514-10-2014 16:35:31

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

Re: Custom Buttons

hartumov пишет

У меня к gBrowser приделан EventListener на событие DOMContentLoaded. Он запускает нужную функцию, все  ОК.
Вопрос: это при каждом обновлении страницы будет добавляться еще один EventListener? Надо ли их удалять?

Если ты про это 03-10-2014 10:37:52 то не надо удалять и не добавляться еще один EventListener. 

И вообще, в каких случаях надо листенер удалять, а когда не надо?

Тут так просто не объяснишь и вряд ли тут кто объяснит, все тут люди занятые, я сам не достаточно знаю и медленно пишу на русском. Лучше задавай вопросы про конкретные ситуации и коды. Может тут загляни Event reference | MDN

А как обратиться к родительскому окну? Я пробовал проверить мое_окошко.opener

Именно так - мое_окошко.opener Может тут посмотри Редактировать сохранённые логины и пароли

chrome://browser/content/browser.xul
Что это за адрес?

Открой этот адрес и вопросы отпадут.

Отредактировано bunda1 (14-10-2014 18:33:24)

Отсутствует

 

Board footer

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