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

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

№215122-04-2019 21:54:26

func4ptch4
Участник
 
Группа: Members
Зарегистрирован: 03-05-2018
Сообщений: 220
UA: Firefox 66.0

Re: Обсуждение кнопок CB

kokoss попробуй спросить тута, там Dumby чаще появляется https://forum.mozilla-russia.org/viewto … 10#p768810

Отредактировано func4ptch4 (09-08-2019 03:41:20)

Отсутствует

 

№215207-05-2019 22:48:30

firepox
Участник
 
Группа: Members
Зарегистрирован: 17-11-2011
Сообщений: 358
UA: Firefox 56.0

Re: Обсуждение кнопок CB

Приветствую,
Пользуюсь этой кнопкой, все отлично работает, но хотелось бы улучшить.

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

Выделить код

Код:

// Настройка функций кликов мыши для кнопки .............
this.onclick =e=> {
   
   if ( e.button == 0 ) {        // ЛКМ
         deleteCookiesFromHost();
        reloadAllTabsFromHost();
   
   

        }
      
   if ( e.button == 1 ) {        // СКМ 
   
           deleteCookiesFromHost();
        //BrowserReload();
   
  
        }
        
   if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) {       // ПКМ
        e.preventDefault();  
        
        try { Services.wm.getMostRecentWindow("Browser:Cookies").close() } catch(e) {};
        var win = openDialog ("chrome://browser/content/preferences/cookies.xul", "_blank", "resizable,dialog=yes,centerscreen", null);
        addEventListener("load", ()=> {
           var host = content.location.host, arr = host.split('.');
           if ( arr.length > 2 ) host = arr[1] + "." + arr[2];
           var filter = win.document.getElementById("filter");
           filter.value = host; setTimeout(()=> filter.doCommand(), 0);
        }, false, win);
        }        
};


// Удалить куки базового домена .............
function deleteCookiesFromHost() {
   var host = Services.eTLD.getBaseDomain(gBrowser.currentURI);

   // удалить обычные куки домена
   for ( var en = Services.cookies.enumerator; en.hasMoreElements(); ) {
         var cookie = en.getNext().QueryInterface(Ci.nsICookie);
         ~cookie.host.indexOf(host.trim()) && Services.cookies.remove(cookie.host, cookie.name, cookie.path, false); 
         }
   
   // удалить куки домена из истории     
   var reversedDomain = host.split("").reverse().join("") + ".";
   Cu.import("resource://gre/modules/FileUtils.jsm");
   var file = FileUtils.getFile("ProfD", ["webappsstore.sqlite"]);
   var dbConn = Services.storage.openDatabase(file);
   dbConn.executeSimpleSQL("DELETE FROM webappsstore2 WHERE scope LIKE \"%" + reversedDomain +"%\"");
   dbConn.close();
   
   // удалить все Flash куки
   var dir = Services.dirsvc.get('Home', Ci.nsIFile);
   dir.append("Application Data");
   dir.append("Macromedia");
   dir.remove(true);
   dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);
};


// Перезагрузить все вкладки текущего сайта .............
function reloadAllTabsFromHost() {
   var host = content.document.domain;
   
   for( var tab of gBrowser.tabs ) {  
        var tabHost = tab.linkedBrowser.contentDocument.location.host;
        if ( host == tabHost ) gBrowser.reloadTab(tab);
        }
};


this.tooltipText = "Л: Удалить куки текущего сайта\
                  \nС: Удалить куки текущего сайта + обновить все вкладки текущего сайта\
                  \nП: Управление куками для текущего сайта\
                  \nCtrl+П: CB Меню";


В папке storage\temporary и storage\default

есть папки https+++domen.ru
можно сделать, чтобы и папка домена удалялась при нажатии на кнопку.

Спасибо!

Отредактировано firepox (07-05-2019 22:52:48)

Отсутствует

 

№215322-01-2022 16:20:56

ascerdfg
Участник
 
Группа: Members
Зарегистрирован: 28-03-2010
Сообщений: 15
UA: Chrome 86.0

Re: Обсуждение кнопок CB

Ultima2m пишет

Попробуйте этот код. Раньше вроде работало

А потом вы пересели на супер-пупер браузер без белых вспышек?

Добавлено 22-01-2022 16:22:57

firepox пишет

можно сделать, чтобы и папка домена удалялась при нажатии на кнопку.

Спасибо!

Это утверждение?

Отредактировано ascerdfg (22-01-2022 16:22:57)

Отсутствует

 

№215424-10-2022 17:56:54

Duche
Участник
 
Группа: Members
Зарегистрирован: 07-02-2016
Сообщений: 208
UA: Firefox 105.0

Re: Обсуждение кнопок CB

Добрый день . Исправите пожалуйста кнопку Autocopy+31 для FF105

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

Выделить код

Код:

/*Initialization Code*/

/*Initialization Code*/
this.closest("toolbarpaletteitem") || (script => {
    var id = `CB${_id.slice(20)}:Autocopy`, pid = id + "Parent";
    var nsvoStr = `Components.utils.import("resource://gre/modules/Services.jsm", {})`;
    var nsvo = eval(nsvoStr), {Services} = nsvo, parent = nsvo[pid];
    if (!parent) {
        var cid = id + "Child", u = code => "data:," + encodeURIComponent(code);
        var pref = "CB.Autocopy.settings", topic = "quit-application-granted";
        var PREF_ENABLED = 1, PREF_BLINK = 2, PREF_RESET = 4;

        (parent = nsvo[pid] = {
            init() {
                this.readSettings();
                if (!this[PREF_ENABLED]) return;
                this.initChild();
                if (this[PREF_RESET]) this.setObserver(true);
            },
            destroy(reason) {
                var ud = reason[5] == "e";
                if (ud || !this.obsAdded) this.saveSettings();
                delete nsvo[pid];
                if (reason == "delete") Services.prefs.clearUserPref(pref);
                if (!this[PREF_ENABLED]) return;

                this.destroyChild();
                if (ud && this[PREF_RESET]) this.setObserver(false);
            },
            get processURL() {
                delete this.processURL;
                this.frameURL = u(`${nsvoStr}["${cid}"].init(this);`);
                return this.processURL = u(script.replace(/%ID%/g, cid)
                    .replace("%NSVO%", nsvoStr)
                    .replace("%PREF%", pref)
                    .replace("%PREF_BLINK%", PREF_BLINK)
                );
            },
            get frameURLDestroy() {
                delete this.frameURLDestroy;
                this.processURLDestroy = u(`${nsvoStr}["${cid}"].forget();`);
                return this.frameURLDestroy = u(`${nsvoStr}["${cid}"].destroy(this);`);
            },
            initChild() {
                Services.ppmm.loadProcessScript(this.processURL, true);
                Services.mm.loadFrameScript(this.frameURL, true);
            },
            destroyChild() {
                Services.mm.removeDelayedFrameScript(this.frameURL);
                Services.mm.loadFrameScript(this.frameURLDestroy, false);
                Services.ppmm.removeDelayedProcessScript(this.processURL);
                Services.ppmm.loadProcessScript(this.processURLDestroy, false);
            },
            readSettings() {
                var val = Services.prefs.getIntPref(pref, 3);
                for(var setting of [PREF_ENABLED, PREF_BLINK, PREF_RESET])
                    this[setting] = Boolean(val & setting);
            },
            saveSettings() {
                var settings = 0;
                for(var setting of [PREF_ENABLED, PREF_BLINK, PREF_RESET])
                    if (this[setting]) settings += setting;
                Services.prefs.setIntPref(pref, settings);
            },
            btns: new Set(),
            register(btn) {
                this.btns.add(btn);
                btn._handleClick = this.click;
                btn.oncontextmenu = this.context;
                this.setImg(btn, this[PREF_ENABLED]);
            },
            unregister(btn, reason) {
                this.btns.delete(btn);
                if (!this.btns.size) this.destroy(reason);
            },
            setImg(btn, state) {
                (btn.icon || btn.ownerDocument.getAnonymousElementByAttribute(
                    btn, "class", "toolbarbutton-icon"
                )).src = state
             ? "data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJTUUH1gUCFysoMPbyDwAABE5JREFUOI2NlV1sFFUUx39z73S/6C67s6UsQisWAgZBKRTUhBhDJAhEoyQ2QqMlhjcSP158MMYHoo+YGF5MjNCHqkmJKJpgaYAEFYhalWio2EWXpZgIS3G3uzu783Hn+tAPW2zRk5zcySTnd//nf+fMNfr6+qK1Wq1Fa50BWoCMlLJNSrkUWBIEwUKlVFJKWRZCDPu+3+O67sd79+69xR3C6Onp0alUyrYsSyeTSdHY2BiKxWIyEokQCoVoaGhgdHSUQqGAEALXdf1sNuvX6/WD4XB4f2dnZ2VWcG9vb6mrqyvheR5aa4IgmFonn33fx/O8qfR9H9u2g6Ghoeu2ba+eTb1pGEZJKZWwbRut9axtpVIpgiCY2sBxHJLJpIhGo5nBwcGXgTdurxGGYYz6vo9hGHP6FQQBUkrK5TK5XI5qtUosFiOdThuGYSyfrcYECq7r3hHsOA6u6zI2NkZLSwsAWmtM06Rx9MLKi7sj+UCqpBf1ztg+XZsOURZa6/8Eu64LgGVZU++01ri/n+NRZbWveun71tVbjiWWRNq3zWvgHQAhhFBBEMwJnSuql04j3RrRrdsN74lXKR88QqRpp6k8dgEIpZQ316HNFfalUxh/ZZm/PIrHm1x/aw038yPYbhEhGAUQeoJ6JytmKB0aQJav0LR+FfLas0Sv96GXVTBe6OBG8aijFPsmwbbv+/8LWvn5OGZ1hKZ1K5HXdkFxDOoWSQlF2e84tdyeDYc5BmBKKRuFEHN+wzB+UJWfPiPs3yK9fiXyaheUxsBJ44a2MXL881pQyO/ZcIi+yRpTax2fC6y1Hode+JQIZdLty5FXd0OpDE4TrrmVX0+cw72Z7+44xJHptUJKmbjd3+mjXfnxCFEqpNe2IfO7oVgGZwGu+TiXT33Dbwu2qY73Z0IBBDBPSjmlbnqODX5EVDhYa5eOQ0sV8Jpxza1kT54ntX0/lYUP1WezTwRBkJi0YvrPZ+zbXuaFNNYDrdOgC8ehA2eJbH6N2OrtBEHgAPJ2sAlEDcNAKfVP+4MfMj+VInnvAkTuGShVwc3gNGwhe+IrQptfRy99hGKxiO/79QmOBqYmTWito4ZhzLDAufgJ1sZORHwVXvg58BbhmI+R/eJL3I2vUEyuoVqtUq/XUUrVJiwV/1IshCAUCqGUwisXiLdtBKOOU7xJPbaTsKwx3H+a0v37MJrXIZVCa02tVgMoTKidMQym7/tWf3+/a1mWE4/HzUhuILJi01OGcmoEQRhcn+H+M5TbX0S0PsykiHg8ju/7BEEwCqQBeyIdALO7u1scOHCgNZ/PrwiFQm0dv7y9/4e7Hmy+r3SeP08e5sbwd2Sbn/ak16wW1+sik8mEEokEsViMfD5PoVAoAhngyiQUxm8QDeSBq4A8+7zxbum9Jy8fvVX74MRlBr6uLCns2KEXtYiRxcVisSWXyy0Lh8MrDMO4Wyl1j23bfwCXgOp0K/4GqDBYgeGFbWEAAAAASUVORK5CYII="
             : "data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAEj0lEQVR42n2Vf0xbVRTHv49HSwsFSvmxmtLBmMOZ6TYYcyNbYoQAMUAIRFEoyJxEidOYLP6jC8ZgImpCTGb8wwiMAS0bxD8WI4FGDIOamYBi9odaysY6wIGlBVqgfa+/PO+5kraAN7npu/f2fu4533Puuczg4KDc7XZrg8GgGoCWuppl2Rzq2fSdGQgEDvj9fiWNXTExMbM+n6+H5/nvmpubHfifxvT09ARTUlK2VSpVUKlUxigUCml8fDwrk8kglUohkUhgt9ths9lAYBDUZ7FYfB6P56u4uLi22trazT3B/f39G7qGhqTQhMftBlkPslTswjdZCa/Xu9OF8ZHcXPH/XZ2dqXtZz+j1+of1Op02NLG+trbr9OTkZPGQ0AGKxMSdNYNe/4lOp/toF9hgMMzU1NScjCPX94MnEog0xurqKtLS03fm7TQ2Go0D9dT2AhsrKipKEpOSotd2DhC0Jm2hTEmJWN9YX8dE36e/Hb5zNS3A+pVeuff2tg+6891wCVLoy8rK6ikQES5GWx4NdTmd8MyZIJu4G0wsrGRgtsI2fcW3xM305X2Di8zAwEBvcXFxo1wuFzWMhgjw6LEYZMttSAN+JCUfQfD5D+DJygAqczD7oNVT0A25kBVdJSUlFynF9gTv5cH2X2NgnfNIO3UMvK0HdlMOvFemEf/mCfy93LGU34lMpq+vr7O0tPSNhIQEMeL7uR6Cbv1hROzWAtLynwa7WEcLTiwE3oHfqIBr8ybHbc2/cvoabjG9vb1XSYp3hZQKgfezeHFCD4nnEUGfIqhOhMKjgktej3tGE+db/v3C6S7cCOVxd1FR0et040Qp9oOGmt/+PdiHBN0gKJcKXvIi5kYn3R6b9cKpbgzupBtpPEQavyQELzrl1hwO8eapUlMj6ePUuTTwsWUwG++AX71fW9CFoYg8pqwYJSlK0zMyIvY6qD4IbXNmiELMIb34vYh1fqwBc2O/YFZV5q9+/+vYXReEwKZX6+rORUMFS12/3kCCxA/ViWywVnI/P7LePDIZMDbv32psbFTsApPGd6lWPBuaEK6pCJ3SQyFnoTqeSdAG0nQL8B4ASlciAL3XrzuampoEd/3RYAuBnxQGq1QaBejmtAHJFETl0XTEzL/8H5RXg5OUwDI6iWc+fxBpHSAUGiGlAuHBW6ysrNQIqRYqk47eWhy9PAIEV+A1fwbJ0i1wbDEsI5Pgz16GL/MsnjtzJhwc/xjsCwfbq6qqVAKQXgp4XTbwU99CU/0huLV78DgdiLuvx+zIT9g4fglM9jmx0glZdDIvLwSW048nwgvhBaFbx9MLwlF5jJXNG2W5519gYlWHwG/awTsWYO18G668S8DBQvEVEaodvTZi3o+Pj//Q0tLyFrG2H3dOBJOlTEdHx0H6zqUNOQV/ftyG+psZx1KdWP7xGv6ZnYIlo9rLZhX6NRpNjFqtliZRvgu1xWq1Ynh4WN/a2vol7ReEt4fJEy4V2J9fY7wbkM2tONz60TkYTZuZtvLy8ie0Wq2GPNIS8DCV2FyGYbJIukNms/mL9vb2Ntq7FS7Fv/ChKzVwIHr3AAAAAElFTkSuQmCC";
            },
            click() {
                var newState = parent[PREF_ENABLED] = !parent[PREF_ENABLED];
                for(var btn of parent.btns) parent.setImg(btn, newState);
                newState ? parent.initChild() : parent.destroyChild();
                if (parent[PREF_RESET]) parent.setObserver(newState);
            },
            context(e) {
                if (e.ctrlKey || e.shiftKey) return;
                var btn = e.target;
                if (btn.btnPopup && e.detail > 1) return btn.btnPopup.hidePopup();
                e.preventDefault();
                (btn.btnPopup || parent.getPopup(btn)).openPopup(btn, "after_start");
            },
            getPopup(btn) {
                var win = btn.ownerGlobal, doc = win.document;
                var popup = doc.createElementNS(xulns, "menupopup");
                popup.setAttribute("onclick", "event.stopPropagation();");
                popup.setAttribute("oncommand", "handleCommand(event.target);");
                popup.setAttribute("onpopupshowing", "handlePopupshowing();");
                popup.menuitems = [];
                for(var [lab, pref] of win.Object.entries({
                    "Выделенный текст мигает при автокопировании": PREF_BLINK,
                    "Выключать автокопирование при выходе из браузера": PREF_RESET
                })) {
                    var menuitem = popup.appendChild(doc.createElementNS(xulns, "menuitem"));
                    menuitem.setAttribute("label", lab);
                    menuitem.setAttribute("type", "checkbox");
                    menuitem.pref = pref;
                    popup.menuitems.push(menuitem);
                }
                popup.handleCommand = menuitem => {
                    var newState = this[menuitem.pref] = menuitem.hasAttribute("checked");
                    if (!this[PREF_ENABLED]) return;

                    if (menuitem.pref == PREF_BLINK)
                        this.saveSettings(),
                        Services.ppmm.broadcastAsyncMessage(cid + ":FromParent", {blink: newState});
                    else if (menuitem.pref == PREF_RESET)
                        this.setObserver(newState);
                }
                popup.handlePopupshowing = () => {
                    for(var menuitem of popup.menuitems) this[menuitem.pref]
                        ? menuitem.setAttribute("checked", true)
                        : menuitem.removeAttribute("checked");
                }
                return btn.appendChild(btn.btnPopup = popup);
            },
            obsAdded: false,
            setObserver(set) {this.obsAdded = set
                ? Services.obs.addObserver(this, topic, false)
                : Services.obs.removeObserver(this, topic);
            },
            observe() {
                Services.obs.removeObserver(this, topic);
                this[PREF_ENABLED] = false;
                this.saveSettings();
            }
        }).init();
    }
    parent.register(this);
    addDestructor(reason => parent.unregister(this, reason), parent);

})(`(nsvo => (nsvo["%ID%"] = {
    x: -1, y: -1, down: false,
    handleEvent(e) {e.button || this[e.type](e);},
    mousedown(e) {this.x = e.screenX; this.y = e.screenY, this.down = true;},
    mouseup(e) {
        var {down} = this; this.down = false; if (!down) return;
        if (e.screenX == this.x && e.screenY == this.y && (e.detail == 1 || e.target.matches(
            "textarea[disabled],input[disabled],button,select,summary"
        )))
            return;
        var name = e.originalTarget.nodeName;
        if (/^(?:(?:xul:)?(?:slider|scrollbarbutton)|resizer)$/.test(name))
            return;
        this.x = this.y = -1;
        var win = this.getFocusedWin(e.target.ownerGlobal);
        var sel = win.getSelection();
        if (sel.toString()) {
            (win.docShell || win.document.docShell).doCommand("cmd_copy", null, win);
            this.blinkEnabled && this.blink(win, e.detail > 1);
        }
    },
    blinkEnabled: Boolean(
        Components.classes["@mozilla.org/preferences-service;1"]
            .getService(Components.interfaces.nsIPrefService)
            .getIntPref("%PREF%", 3) & %PREF_BLINK%
    ),
    blink(win, pause) {
        if (pause) return win.setTimeout(() => this.blink(win), 100);
        var sc = (win.docShell || win.document.docShell)
            .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
            .getInterface(Components.interfaces.nsISelectionDisplay)
            .QueryInterface(Components.interfaces.nsISelectionController);
        sc.setDisplaySelection(sc.SELECTION_OFF);
        sc.repaintSelection(sc.SELECTION_NORMAL);
        win.setTimeout(() => {
            sc.setDisplaySelection(sc.SELECTION_ON);
            sc.repaintSelection(sc.SELECTION_NORMAL);
        }, 150);
    },
    getFocusedWin(win) {
        var focusedWin = {};
        var elm = this.fm.getFocusedElementForWindow(win.top, true, focusedWin);
        return focusedWin.value;
    },
    get fm() {
        delete this.fm;
        return this.fm = Components.classes["@mozilla.org/focus-manager;1"]
            .getService(Components.interfaces.nsIFocusManager);
    },
    count: 0,
    init(cfmm) {
        this.count += 1;
        cfmm.addEventListener("mousedown", this);
        cfmm.addEventListener("mouseup", this);
        cfmm.addEventListener("unload", this);
        if (this.count == 1)
            this.cpmm.addMessageListener("%ID%:FromParent", this);
    },
    destroy(cfmm) {
        this.count -= 1;
        cfmm.removeEventListener("mousedown", this);
        cfmm.removeEventListener("mouseup", this);
        cfmm.removeEventListener("unload", this);
        if (!this.count)
            this.cpmm.removeMessageListener("%ID%:FromParent", this);
    },
    receiveMessage(msg) {
        if ("blink" in msg.data) this.blinkEnabled = msg.data.blink;
    },
    unload(e) {this.destroy(e.target);},
    forget: () => delete nsvo["%ID%"]

}).cpmm = this)(%NSVO%);`);

Отсутствует

 

№215516-10-2023 16:17:55

foxboy
Участник
 
Группа: Members
Зарегистрирован: 06-06-2015
Сообщений: 33
UA: Firefox 102.0

Re: Обсуждение кнопок CB

Некоторые кнопки не работают в многопроцессорном режиме, можно их сделать работоспособными?

Отсутствует

 

Board footer

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