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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№965116-02-2016 17:35:56

Northtech
Участник
 
Группа: Members
Зарегистрирован: 16-04-2011
Сообщений: 265
UA: Firefox 44.0

Re: Custom Buttons

bunda1
сломалась кнопочка ((

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EClear%20Cache%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACHklEQVR4AZ2S7WtSYRjGD1HfAiKAiqIiaqOhjD4tagMLCKB/IggGo9FgFazY1moFTovecGsAY83IpeTUGAzOKJoTzXdTz0sH0XZSTCWIBhEgV899wENHiFYP/FDv+7p+PEcO51FOEZanmV3YKpSn3vDCCY7K56fe7MFydS/6H3VheKHjj9je7oRftYDy1NME9EP++ZAEf+Vdw6J9Up56mmAicARu8QxsbLBVnn/oAfV0AQ3/kZZgB3fDcxT/CQm2cU+8g+es9jvN6Tk7bI5R2InpMY17M+M6NKf949kp2O7fbT7wXejlWicQCHzP5XKQZVmHj8/i2qIJq/F5wzwSiYDn+a/c7yccDn8qFotoNBoaX2oVjHi6EBJduLlkxnV3n77LZrOEbBBEo9H3oijqoUyBx+TrbgildVxZ7MQt71l9F4vFIEkSbxAkEgkXA3F5FZedJtz2d6Naq2iFWr0Kf9SKSlVFvV5HMBhEoVBwGASpVGokFAqh3qjBunwaQ04zSmWJBJpo4lUfxl6eRLlcBuUURRkwCDKZjHltba0plsIY9XZiPe9CMOfCRkXBuKcHYcGPgfn9yEpJeoSmKIrHDYJ8Pr+dmTfVzxuY9PfiqrsDQy8OYSU5g0vOAxh8dhD9c8fAikin098oz7WfZDJZUlWVrm3AwV9sfaerQxCEj+3dwwwTu8GKz+f7wdhk70WzHZrTnv1fSyy/j7Gbyr8AV4FsTcmSKioAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%29%20return%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20....%0A%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%0A%0A%0A%0A%20%20%20%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29.%0A%20%20%20%20%20showAlertNotification%28self.image%2C%20self.label%20+%20%22%20%20%22%2C%20%27Operation%20Complete%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%0A%7D%3B%0A%0A%0A//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20....%0A%28function%28%29%20%7B%0A%20%20%20%20var%20title%20%3D%20self.label%20+%20%22%3A%5Cn%5Cn%22%3B%0A%20%20%20%20var%20data%20%3D%20%7B%0A%20%20%20%20%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%20%20%20%20%7D%3B%0A%20%20%20%20function%20getSize%28size%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20%20%20%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20%20%20%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20%20%20%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20self.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0A%20%20%20%20var%20types%20%3D%20Object.keys%28data%29%3B%0A%20%20%20%20var%20ttt%20%3D%20title%20+%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%0A%20%20%20%20self.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20ttt%3B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28%7B%7D%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%7D%29%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Выделить код

Код:

this.onclick = function(e) {
     if ( e.button ) return;
     
     // очистить кэш ....
     try { 
         Services.cache.evictEntries(Ci.nsICache.STORE_IN_MEMORY);
         Services.cache.evictEntries(Ci.nsICache.STORE_ON_DISK);
         } 
     catch(e) { Services.cache2.clear() }



     // Всплывающее сообщение ....
     Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService).
     showAlertNotification(self.image, self.label + "  ", 'Operation Complete', false, "", null, "");

};


// Всплывающая подсказка у кнопки ....
(function() {
    var title = self.label + ":\n\n";
    var data = {
        memory: "Memory Cache:  ",
        disk: "Disk Cache:  ",
        offline: "Offline Cache:  "
    };
    function getSize(size) {
        if (!size) return size === 0 ? "0" : "?";
        for(var count = -1; size >= 1024; size /= 1024, count++);
        return size.toFixed(2).replace(/0+$/, "").replace(/\.$/, "") + " " + ("KMGT"[count] || "") + "B";
    }
    function setInf(tot, max, type, i) {
        var inf = getSize(tot) + " / " + getSize(max);
        var key = "browser.cache." + type + ".enable";
        if (!Services.prefs.getBoolPref(key)) inf += " (disabled)";
        self.tooltipText = self.tooltipText.replace(zws(i), inf);
    }
    function zws(ind) "\u200B\u200B\u200B".slice(0, ++ind);

    var types = Object.keys(data);
    var ttt = title + types.map(function(key, i) data[key] + zws(i)).join("\n");

    self.onmouseenter = function() {
        self.tooltipText = ttt;
        try {
            var entries = {};
            Services.cache.visitEntries({
                visitDevice: function(device, info) entries[device] = info,
                visitEntry: function() {}
            });
            types.forEach(function(type, i) {
                var info = entries[type];
                setInf(info && info.totalSize, info && info.maximumSize, type, i)
            });
        } catch(ex) {
            Services.cache2 && types.forEach(function(type, i) {
                var func = function(aEntryCount, aConsumption, aCapacity, aDiskDirectory)
                    setInf(aConsumption, aCapacity, type, i);
                var storage = Services.cache2[(type == "offline" ? "app" : type) + "CacheStorage"]({}, null);
                try { storage.asyncVisitStorage({onCacheStorageInfo: func}, false) } catch(ex) {};
            });
        }
    };
})();

Отсутствует

 

№965216-02-2016 22:00:13

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

Re: Custom Buttons

Northtech пишет

bunda1
сломалась кнопочка ((

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EClear%20Cache%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACHklEQVR4AZ2S7WtSYRjGD1HfAiKAiqIiaqOhjD4tagMLCKB/IggGo9FgFazY1moFTovecGsAY83IpeTUGAzOKJoTzXdTz0sH0XZSTCWIBhEgV899wENHiFYP/FDv+7p+PEcO51FOEZanmV3YKpSn3vDCCY7K56fe7MFydS/6H3VheKHjj9je7oRftYDy1NME9EP++ZAEf+Vdw6J9Up56mmAicARu8QxsbLBVnn/oAfV0AQ3/kZZgB3fDcxT/CQm2cU+8g+es9jvN6Tk7bI5R2InpMY17M+M6NKf949kp2O7fbT7wXejlWicQCHzP5XKQZVmHj8/i2qIJq/F5wzwSiYDn+a/c7yccDn8qFotoNBoaX2oVjHi6EBJduLlkxnV3n77LZrOEbBBEo9H3oijqoUyBx+TrbgildVxZ7MQt71l9F4vFIEkSbxAkEgkXA3F5FZedJtz2d6Naq2iFWr0Kf9SKSlVFvV5HMBhEoVBwGASpVGokFAqh3qjBunwaQ04zSmWJBJpo4lUfxl6eRLlcBuUURRkwCDKZjHltba0plsIY9XZiPe9CMOfCRkXBuKcHYcGPgfn9yEpJeoSmKIrHDYJ8Pr+dmTfVzxuY9PfiqrsDQy8OYSU5g0vOAxh8dhD9c8fAikin098oz7WfZDJZUlWVrm3AwV9sfaerQxCEj+3dwwwTu8GKz+f7wdhk70WzHZrTnv1fSyy/j7Gbyr8AV4FsTcmSKioAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%29%20return%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20....%0A%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%0A%0A%0A%20%20%20%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29.%0A%20%20%20%20%20showAlertNotification%28self.image%2C%20self.label%20+%20%22%20%20%22%2C%20%27Operation%20Complete%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%7D%3B%0A%0A%0A//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20....%0A%28function%28%29%20%7B%0A%20%20%20%20var%20title%20%3D%20self.label%20+%20%22%3A%5Cn%5Cn%22%3B%0A%20%20%20%20var%20data%20%3D%20%7B%0A%20%20%20%20%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%20%20%20%20%7D%3B%0A%20%20%20%20function%20getSize%28size%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20%20%20%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20%20%20%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20%20%20%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20self.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0A%20%20%20%20var%20types%20%3D%20Object.keys%28data%29%3B%0A%20%20%20%20var%20ttt%20%3D%20title%20+%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%20%20%20%20%0A%20%20%20%20var%20context%20%3D%20Cu.import%28%22resource%3A//gre/modules/LoadContextInfo.jsm%22%2C%20%7B%7D%29.LoadContextInfo.default%3B%0A%20%20%20%20self.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20ttt%3B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28context%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%7D%29%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отсутствует

 

№965317-02-2016 15:24:36

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

Re: Custom Buttons

oleg.sgh пишет

bunda1
Понравилась ваша кнопка. А можно что бы меню, с поисковиками, открывалось при наведении курсора на поле ввода а не по щелчку как сейчас? Если  уже ленится так до упора

:/ положи в инициализацию кнопки:

Выделить код

Код:

var box = BrowserSearch.searchBar._textbox;
box.onmouseleave =()=> box.mo = true;
box.onmouseover =()=> { box.mo = false; setTimeout(()=> !box.mo && box.childNodes[1].children[0].children[0].click(), 800); };
addDestructor(()=> box.onmouseover =()=> null );

Время удержания курсора на панели поиска 800 при котором открывается меню с поисковиками, подправь так как тебе удобнейю

Отсутствует

 

№965417-02-2016 15:54:39

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

Re: Custom Buttons

emlen пишет

Dumby, bunda1, если не сложно, подскажите еще пожалуйста отдельно код для удаления всех куков сайта с возможностью ручной подстановки в сам код имени сайта. И я так и не нашел самый простой вариант, чтобы все адреса открытых вкладок сливались в одну папку закладок (прописанную в самом коде), закрывая при этом все вкладки. Спасибо.

:/

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

Выделить код

Код:

var hosts = [
    "□□□□□□.□□",
    "□□□□□□.□□□",
    "□□□□.□□□□□□□.□□"
];
var en = Services.cookies.enumerator;
while(en.hasMoreElements()) {
    var cookie = en.getNext().QueryInterface(Ci.nsICookie);
    for(var host of hosts) if (
        //cookie.host == "." + host || cookie.host == host
        cookie.host.endsWith("." + host) || cookie.host == host
    ) Services.cookies.remove(cookie.host, cookie.name, cookie.path, false);
}
Выделить код

Код:

var parentFolderId = □□;

for(var tab of [...gBrowser.tabs]) PlacesUtils.bookmarks.insertBookmark(
    parentFolderId, tab.linkedBrowser.currentURI, -1, tab.label
), gBrowser.removeTab(tab);

Отсутствует

 

№965517-02-2016 16:02:34

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 3157
UA: Firefox 44.0

Re: Custom Buttons

bunda1
Спасибо.

Отсутствует

 

№965617-02-2016 16:53:32

Northtech
Участник
 
Группа: Members
Зарегистрирован: 16-04-2011
Сообщений: 265
UA: Firefox 44.0

Re: Custom Buttons

bunda1
Спасибо :)

Отсутствует

 

№965717-02-2016 17:12:02

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

Re: Custom Buttons

Dumby, спасибо! А как узнать parentFolderId?:blush:


SeaMonkey 2.39 forever

Отсутствует

 

№965817-02-2016 18:17:01

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

Re: Custom Buttons

emlen
Наводишь Attributes Inspector на Панель меню > Закладки > Папка
Жмешь Ctrl+ЛКМ или СКМ. Откроется DOM Inspector.
В окне DOM Inspector'а, с правой стороны, Объект Javascript > _placesNode > itemId

Отсутствует

 

№965917-02-2016 19:38:38

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

Re: Custom Buttons

emlen пишет

А как узнать parentFolderId?:blush:

Можно добавлять вкладки в папку закладок указав её название, если такой папки не существует код создаст её на панели закладок:

Выделить код

Код:

var folderName = "qwerty";
var folderId = getBookmarksFolderId(folderName);
if ( !folderId ) { 
     PlacesUtils.bookmarks.createFolder(3, folderName, -1);
     var folderId = getBookmarksFolderId(folderName);
     }

for(var tab of [...gBrowser.tabs]) PlacesUtils.bookmarks.insertBookmark(
    folderId, tab.linkedBrowser.currentURI, -1, tab.label
), gBrowser.removeTab(tab);


function getBookmarksFolderId(folderName, id = 1) {
   var res = false; 
      
   (function f(id) { 
      var folder = PlacesUtils.getFolderContents(id).root;
     
      folder.QueryInterface(Ci.nsINavHistoryContainerResultNode);
      folder.containerOpen = true;         
         
      for ( var i = 0; i < folder.childCount; i++ ) {
            var child = folder.getChild(i);
            if ( !PlacesUtils.nodeIsFolder(child) ) continue;
               
            if ( child.title == folderName ) {
                 res = child.itemId;
                 break;
                 }    
            f(child.itemId);                            
            }                      
      folder.containerOpen = false
   })(id);
      
   return res; 
};

Отсутствует

 

№966018-02-2016 14:46:16

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

Re: Custom Buttons

bunda1, спасибо. Еще бы хотелось подкорректировать вот что: каждый раз создается лишний ярлык "Загрузка…" с адресом "about:blank" и было бы неплохо добавлять все ярлыки сверху списка содержимого подпапки закладок, а не в его далеком хвосте..

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ESession2bm%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAEVUlEQVR4XqWUf0xVZRjHv+/5ce/h3gsXrxZcvJQgXBFcgjrNJcJac07KSXNrWjL/EKyV6WprKdMgchW0pLRYKqlLi37aJrXmgkqWBKQJkgnKvCAKYrircX+ce885Ty/s3oWTNh3P9tnOH+f9PN+953kO27VGsAPYIDC2hRiLZ2S8/+IRvRSTLO7Dq0kPZu7MW1nserRgnc0SN2Vz9VrxqUmLRVEuzlyQb/Z7GhD29iB70TKrwLCLy+VJiQ09HDI0jXcwYWSgA1arBQnTZ9oBbKx9jT1x6A3zyb0bmXzPYs7Bs63HA3Gp+bAmZOFWXysycnItZgeqTErs50SYz5KQcu+JCaXDg57qph8+C0pT3DA7ZqBvqAmOmVOVVUVbYpzJaSrT8BDutYhoDD4dq3cXmfyf7nRQ/d5kGu4pId/ll+jX1W46JjOtXhB2ExHuFgGRss8yTsekhG5Oc5kpZ3EWApdPoXX5AeCXIWQmukRdoGf37WBFHPlu7xi1O9gjBJzOzE67b3Z2BvO2daNzVQccwzJc1nicv34V8SUZUlJy8oeixHq5fPVdiQUR28Bk60C/19dZc0rzPN+L9DgnJCagY6gfyZVuZGxyYemKZ6zLCtc7pyU4Dx2sEFt5g7T/EzMiAgDsL2cuGJidWCl84XYkxg+rPgxLKlLeI1geEGE2WyCbrFBs8yBZcnDF8xc1N9T7Q+rIm4ZBbxe/TtqE4ijfieJ2XaSy2LxUlvRKLxMUgiSZx8QmDn+GLNkgW+cjTKn4o6Ux0NPZ5A2F1HIAB3kDNXIVt1eBrlcMbSUtY89yJlos0dmJ5gBjNmiaCoTOQEEjFi/NiVm5bqszfc6id0VRuFZbxrbzK1KEifcc/f6RYYim+/8byYhcEIKQzC4EfCpID4Gpv8OutGPJYwWWx9duthMTSu9IHIUMfPv3QJ9hUtIBELSwxiUGADN0TYcs+iBbZsF74xYMMgEgHsaGi3+2qJKAI/w6ghOKDQNfXzh3xi/HuMGYAiIDoRCXE0E3YnlaL5QYAUpcJoYGbkKXc3G+vVnrPtvSFw4bL0yYmDEmlFSgPeDzd13r7yaTbS5PA55ah+r3QlamIhgg+L09sNhTodhz0fbTJ+Hffj7adcOr5/K0gfErHW0Sx3Fy0p5egTWHKx2Bwe5N1NOcSJdaZlBXQyxdP5vGV309eU4uJK+nlOr3zw7u2SafcCUgC4Az4mBRKePERqRuzjxO3jsv8zB1s8KD3SVcPp362rLp4ok0Cl4rp6vta6muyqaWPSceFRjyI2fcEYdNiKSmcTNFUaoPo/JcR9eNK5cuUIx9CSxT88GkFLQ0HtCPfVX3T933I1VlNfo+g2AAGO9Qb/sjAVA4CZwUThZnwYJMPPnRdnazs6nQOH38YePjCjH41mb2o3MaVgLI5SzgZEXOxHNEIops3gQfEIAp0si0oRBzF87BN2Edpzov4IOaL9EKIMwJcYIclaPRONm/kPwOC32Q8lEAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20folderName%20%3D%20%2200_USO%22%3B%0Avar%20parentFolderId%20%3D%20getBookmarksFolderId%281%2C%20folderName%29%3B%20%0A%21parentFolderId%20%26%26%20PlacesUtils.bookmarks.createFolder%283%2C%20folderName%2C%20-1%29%3B%0Avar%20parentFolderId%20%3D%20getBookmarksFolderId%281%2C%20folderName%29%3B%0A%0Afor%28var%20tab%20of%20%5B...gBrowser.tabs%5D%29%20PlacesUtils.bookmarks.insertBookmark%28%0A%20%20%20%20parentFolderId%2C%20tab.linkedBrowser.currentURI%2C%20-1%2C%20tab.label%0A%29%2C%20gBrowser.removeTab%28tab%29%3B%0A%0A%0Afunction%20getBookmarksFolderId%28id%2C%20folderName%29%20%7B%0A%20%20%20var%20res%20%3D%20false%3B%20%0A%20%20%20%20%20%20%0A%20%20%20%28function%20f%28id%29%20%7B%20%0A%20%20%20%20%20%20var%20folder%20%3D%20PlacesUtils.getFolderContents%28id%29.root%3B%0A%20%20%20%20%20%0A%20%20%20%20%20%20folder.QueryInterface%28Ci.nsINavHistoryContainerResultNode%29%3B%0A%20%20%20%20%20%20folder.containerOpen%20%3D%20true%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20for%20%28%20var%20i%20%3D%200%3B%20i%20%3C%20folder.childCount%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20child%20%3D%20folder.getChild%28i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20%21PlacesUtils.nodeIsFolder%28child%29%20%29%20continue%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20child.title%20%3D%3D%20folderName%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20res%20%3D%20child.itemId%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20f%28child.itemId%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20folder.containerOpen%20%3D%20false%0A%20%20%20%20%20%7D%29%28id%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20return%20res%3B%20%0A%7D%3B%0A%0A%0A//var%20parentFolderId%20%3D%20%u25A1%u25A1%3B%0A%0Afor%28var%20tab%20of%20%5B...gBrowser.tabs%5D%29%20PlacesUtils.bookmarks.insertBookmark%28%0A%20%20%20%20parentFolderId%2C%20tab.linkedBrowser.currentURI%2C%20-1%2C%20tab.label%0A%29%2C%20gBrowser.removeTab%28tab%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

SeaMonkey 2.39 forever

Отсутствует

 

№966118-02-2016 20:03:13

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

Re: Custom Buttons

emlen пишет

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

Выделить код

Код:

var folderName = "qwerty";
var folderId = getBookFolderId(folderName);
if ( !folderId ) { 
     PlacesUtils.bookmarks.createFolder(3, folderName, -1);
     var folderId = getBookFolderId(folderName);
     };

for(var tab of [...gBrowser.tabs]) PlacesUtils.bookmarks.insertBookmark(
    folderId, tab.linkedBrowser.currentURI, 0, tab.label
), gBrowser.removeTab(tab);

function getBookFolderId(folderName, id = 3, res = false) {
   var folder = PlacesUtils.getFolderContents(id).root;
   folder.QueryInterface(Ci.nsINavHistoryContainerResultNode);
   folder.containerOpen = true;         
         
   for ( var i = 0; i < folder.childCount; i++ ) {
         var child = folder.getChild(i);            
         if ( child.title == folderName ) {
              res = child.itemId;
              break;
              }    
         }                      
   folder.containerOpen = false
      
   return res; 
}

Добавлено 18-02-2016 20:04:23

emlen пишет

каждый раз создается лишний ярлык "Загрузка…" с адресом "about:blank"

Не наблюдаю :/

Отредактировано bunda1 (18-02-2016 20:04:23)

Отсутствует

 

№966218-02-2016 21:09:12

Retif
Участник
 
Группа: Members
Зарегистрирован: 14-09-2014
Сообщений: 111
UA: Firefox 43.0

Re: Custom Buttons

bunda1 пишет

bunda1, можно в ссылке выделить часть текста и скопировать.

Проверил на FF45 вроде работает.

Проверил сейчас на FF 44.0.2 и Custom Buttons 0.0.5.8.3 - кнопка какая-то серая, как будто неактивная, из-за чего это может быть?

Выделить код

Код:

var listener = {
handleEvent: function(event) {
  content.removeEventListener(event.type, this, false);

  switch(event.type) {
   case "dragstart":
    if(even

    event.preventDefault();
    break;
  }
}
}

addEventListener("dragstart", listener, true);t.view.top != content)
     return;
    event.preventDefault();

    var utils = document.commandDispatcher.focusedWindow.
    QueryInterface(Components.interfaces.nsIInterfaceRequestor).
    getInterface(Components.interfaces.nsIDOMWindowUtils);

    utils.sendMouseEvent("mousedown", event.clientX, event.clientY, event.button, 1, utils.MODIFIER_ALT);

    this.target = event.target;
    content.addEventListener("click", this, false);
    content.addEventListener("mouseup", this, false);
    break;
   case "mouseup":
    if(event.target != this.target)
     content.removeEventListener("click", this, false);
    break;
   case "click":

Отсутствует

 

№966318-02-2016 21:12:08

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

Re: Custom Buttons

Retif пишет

кнопка какая-то серая, как будто неактивная, из-за чего это может быть?

Ты не весь код скопировал. Вот так нужно:

Выделить код

Код:

var listener = {
handleEvent: function(event) {
  content.removeEventListener(event.type, this, false);

  switch(event.type) {
   case "dragstart":
    if(event.view.top != content)
     return;
    event.preventDefault();

    var utils = document.commandDispatcher.focusedWindow.
    QueryInterface(Components.interfaces.nsIInterfaceRequestor).
    getInterface(Components.interfaces.nsIDOMWindowUtils);

    utils.sendMouseEvent("mousedown", event.clientX, event.clientY, event.button, 1, utils.MODIFIER_ALT);

    this.target = event.target;
    content.addEventListener("click", this, false);
    content.addEventListener("mouseup", this, false);
    break;
   case "mouseup":
    if(event.target != this.target)
     content.removeEventListener("click", this, false);
    break;
   case "click":
    event.preventDefault();
    break;
  }
}
}

addEventListener("dragstart", listener, true);

Отсутствует

 

№966418-02-2016 21:14:13

Retif
Участник
 
Группа: Members
Зарегистрирован: 14-09-2014
Сообщений: 111
UA: Firefox 43.0

Re: Custom Buttons

bunda1, да, сам только секунду назад обнаружил, что код не полный, да, заработало, извините, сам дурак :dumb:

Отредактировано Retif (18-02-2016 21:14:36)

Отсутствует

 

№966518-02-2016 22:03:23

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

Re: Custom Buttons

bunda1 пишет

Не наблюдаю :/

:);) спасибо,

так↓

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ESession2bm%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAEVUlEQVR4XqWUf0xVZRjHv+/5ce/h3gsXrxZcvJQgXBFcgjrNJcJac07KSXNrWjL/EKyV6WprKdMgchW0pLRYKqlLi37aJrXmgkqWBKQJkgnKvCAKYrircX+ce885Ty/s3oWTNh3P9tnOH+f9PN+953kO27VGsAPYIDC2hRiLZ2S8/+IRvRSTLO7Dq0kPZu7MW1nserRgnc0SN2Vz9VrxqUmLRVEuzlyQb/Z7GhD29iB70TKrwLCLy+VJiQ09HDI0jXcwYWSgA1arBQnTZ9oBbKx9jT1x6A3zyb0bmXzPYs7Bs63HA3Gp+bAmZOFWXysycnItZgeqTErs50SYz5KQcu+JCaXDg57qph8+C0pT3DA7ZqBvqAmOmVOVVUVbYpzJaSrT8BDutYhoDD4dq3cXmfyf7nRQ/d5kGu4pId/ll+jX1W46JjOtXhB2ExHuFgGRss8yTsekhG5Oc5kpZ3EWApdPoXX5AeCXIWQmukRdoGf37WBFHPlu7xi1O9gjBJzOzE67b3Z2BvO2daNzVQccwzJc1nicv34V8SUZUlJy8oeixHq5fPVdiQUR28Bk60C/19dZc0rzPN+L9DgnJCagY6gfyZVuZGxyYemKZ6zLCtc7pyU4Dx2sEFt5g7T/EzMiAgDsL2cuGJidWCl84XYkxg+rPgxLKlLeI1geEGE2WyCbrFBs8yBZcnDF8xc1N9T7Q+rIm4ZBbxe/TtqE4ijfieJ2XaSy2LxUlvRKLxMUgiSZx8QmDn+GLNkgW+cjTKn4o6Ux0NPZ5A2F1HIAB3kDNXIVt1eBrlcMbSUtY89yJlos0dmJ5gBjNmiaCoTOQEEjFi/NiVm5bqszfc6id0VRuFZbxrbzK1KEifcc/f6RYYim+/8byYhcEIKQzC4EfCpID4Gpv8OutGPJYwWWx9duthMTSu9IHIUMfPv3QJ9hUtIBELSwxiUGADN0TYcs+iBbZsF74xYMMgEgHsaGi3+2qJKAI/w6ghOKDQNfXzh3xi/HuMGYAiIDoRCXE0E3YnlaL5QYAUpcJoYGbkKXc3G+vVnrPtvSFw4bL0yYmDEmlFSgPeDzd13r7yaTbS5PA55ah+r3QlamIhgg+L09sNhTodhz0fbTJ+Hffj7adcOr5/K0gfErHW0Sx3Fy0p5egTWHKx2Bwe5N1NOcSJdaZlBXQyxdP5vGV309eU4uJK+nlOr3zw7u2SafcCUgC4Az4mBRKePERqRuzjxO3jsv8zB1s8KD3SVcPp362rLp4ok0Cl4rp6vta6muyqaWPSceFRjyI2fcEYdNiKSmcTNFUaoPo/JcR9eNK5cuUIx9CSxT88GkFLQ0HtCPfVX3T933I1VlNfo+g2AAGO9Qb/sjAVA4CZwUThZnwYJMPPnRdnazs6nQOH38YePjCjH41mb2o3MaVgLI5SzgZEXOxHNEIops3gQfEIAp0si0oRBzF87BN2Edpzov4IOaL9EKIMwJcYIclaPRONm/kPwOC32Q8lEAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20t%3Dnew%20Date%28%29%3B%0Avar%20y%3D1900+t.getYear%28%29%3B%0Avar%20min%3Dt.getMinutes%28%29%3B%20if%20%28min%3C10%29%7Bmin%3D%220%22+min%7D%3B%0Avar%20h%3Dt.getHours%28%29%3B%0Avar%20m%3Dt.getMonth%28%29+1%3B%20//switch%28m%29%7Bcase%200%3A%20m%3D%22Jan%22%3Bbreak%3Bcase%201%3A%20m%3D%22Feb%22%3Bbreak%3Bcase%202%3A%20m%3D%22Mar%22%3Bbreak%3Bcase%203%3A%20m%3D%22Apr%22%3Bbreak%3Bcase%204%3A%20m%3D%22May%22%3Bbreak%3Bcase%205%3A%20m%3D%22Jun%22%3Bbreak%3Bcase%206%3A%20m%3D%22Jul%22%3Bbreak%3Bcase%207%3A%20m%3D%22Aug%22%3Bbreak%3Bcase%208%3A%20m%3D%22Sep%22%3Bbreak%3Bcase%209%3A%20m%3D%22Oct%22%3Bbreak%3Bcase%2010%3A%20m%3D%22Nov%22%3Bbreak%3Bdefault%3A%20m%3D%22Dec%22%3B%7D%0Avar%20d%3Dt.getDate%28%29%3B%0Avar%20curdate%3Dy+%22-%22+d+%22-%22+m+%22_%22+h+%22-%22+min%3B%0Avar%20folderName%20%3D%20curdate%3B%20//%2200_USO%22%3B%0A%0Afor%20%28%20var%20i%20%3D%200%3B%20i%20%3C%20gBrowser.tabs.length%3B%20i++%29%20%7B%20gBrowser.getBrowserAtIndex%28i%29.stop%28%29%20%7D%3B%0A%0Avar%20folderId%20%3D%20getBookFolderId%28folderName%29%3B%0Aif%20%28%20%21folderId%20%29%20%7B%20%0A%20%20%20%20%20PlacesUtils.bookmarks.createFolder%283%2C%20folderName%2C%20-1%29%3B%0A%20%20%20%20%20var%20folderId%20%3D%20getBookFolderId%28folderName%29%3B%0A%20%20%20%20%20%7D%3B%0A%0Afor%28var%20tab%20of%20%5B...gBrowser.tabs%5D%29%20PlacesUtils.bookmarks.insertBookmark%28%0A%20%20%20%20folderId%2C%20tab.linkedBrowser.currentURI%2C%200%2C%20tab.label%0A%29%2C%20PlacesUtils.history.QueryInterface%28Ci.nsIBrowserHistory%29.removePage%28tab.linkedBrowser.currentURI%29%2C%20gBrowser.removeTab%28tab%29%3B%0A%0A/*%0Avar%20uri%20%3D%20makeURI%28%22https%3A//developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIBrowserHistory%23removePage%28%29%22%29%3B%0APlacesUtils.history.QueryInterface%28Ci.nsIBrowserHistory%29.removePage%28uri%29%3B%0A*/%0A%0Afunction%20getBookFolderId%28folderName%2C%20id%20%3D%203%2C%20res%20%3D%20false%29%20%7B%0A%20%20%20var%20folder%20%3D%20PlacesUtils.getFolderContents%28id%29.root%3B%0A%20%20%20folder.QueryInterface%28Ci.nsINavHistoryContainerResultNode%29%3B%0A%20%20%20folder.containerOpen%20%3D%20true%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20for%20%28%20var%20i%20%3D%200%3B%20i%20%3C%20folder.childCount%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20var%20child%20%3D%20folder.getChild%28i%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20if%20%28%20child.title%20%3D%3D%20folderName%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20res%20%3D%20child.itemId%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20folder.containerOpen%20%3D%20false%0A%20%20%20%20%20%20%0A%20%20%20return%20res%3B%20%0A%7D%0A%0Avar%20ss%20%3D%20Cc%5B%22@mozilla.org/suite/sessionstore%3B1%22%5D.getService%28Ci.nsISessionStore%29%3B%0Avar%20count%20%3D%20ss.getClosedTabCount%28window%29%3B%0Awhile%28count--%29%20ss.forgetClosedTab%28window%2C%20count%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E


работает как часы. а можно из этой обработки исключить как -то стартовые вкладки
"chrome://sstart/content/sstart.html", просто закрывать таковые не добавляя в папку и таки каждый раз в этой папке досоздавать еще подпапку с датой_временем, типа того

Выделить код

Код:

var t=new Date();
var y=1900+t.getYear();
var min=t.getMinutes(); if (min<10){min="0"+min};
var h=t.getHours();
var m=t.getMonth()+1; //switch(m){case 0: m="Jan";break;case 1: m="Feb";break;case 2: m="Mar";break;case 3: m="Apr";break;case 4: m="May";break;case 5: m="Jun";break;case 6: m="Jul";break;case 7: m="Aug";break;case 8: m="Sep";break;case 9: m="Oct";break;case 10: m="Nov";break;default: m="Dec";}
var d=t.getDate();
var curdate=y+"-"+d+"-"+m+"_"+h+"-"+min;
var folderName = curdate; //"00_USO";

, но чтобы рут -папку для сохранения можно было в коде прописать, и как тут формат "00" для месяца и числа прописать?
:rolleyes:

Отредактировано emlen (19-02-2016 01:52:27)


SeaMonkey 2.39 forever

Отсутствует

 

№966618-02-2016 23:09:04

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

Re: Custom Buttons

Dumby пишет

emlen
Наводишь Attributes Inspector на Панель меню > Закладки > Папка
Жмешь Ctrl+ЛКМ или СКМ. Откроется DOM Inspector.
В окне DOM Inspector'а, с правой стороны, Объект Javascript > _placesNode > itemId

:blush: делаю все по инструкции, после выбора Объект Javascript все переключается в дом инспекторе на другой режим - где я никак не могу найти > _placesNode > itemId
2d31ae0fa6e5t.jpg

и где можно поискать поддерживаемые методы PlacesUtils.history.QueryInterface(Ci.nsIBrowserHistory). ?

Отредактировано emlen (18-02-2016 23:47:32)


SeaMonkey 2.39 forever

Отсутствует

 

№966719-02-2016 00:30:02

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

Re: Custom Buttons

emlen пишет

делаю все по инструкции

Уверен? Раз, два.

emlen пишет

где можно поискать поддерживаемые методы PlacesUtils.history.QueryInterface(Ci.nsIBrowserHistory)

На MDN, например.

Отредактировано Dumby (19-02-2016 00:36:07)

Отсутствует

 

№966819-02-2016 00:52:14

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

Re: Custom Buttons

Dumby, точняк, спасибо! ;)


SeaMonkey 2.39 forever

Отсутствует

 

№966919-02-2016 12:44:05

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

Re: Custom Buttons

Может кому надо:

Выделить код

Код:

// Сохранять изображение без запроса в указанную папку из контекстного меню, от 19.02.2016. ...............  
((contextMenu, viewimage) => {
   var mItem = contextMenu.insertBefore(document.createElement("menuitem"), viewimage);
   mItem.setAttribute("label", "Сохранить в папку: " + getPath().split("\\").pop());
   addDestructor(()=> mItem.remove() );
   addEventListener("popupshowing", e=> mItem.hidden = viewimage.hidden, false, contextMenu); 
   
   mItem.onclick =e=> {
      if ( e.button ) { setPath(); return; }
   
      var run = cbu.getPrefs("browser.download.folderList"),
          use = cbu.getPrefs("browser.download.useDownloadDir"),
          dir = gPrefService.getComplexValue("browser.download.dir", Ci.nsISupportsString).data;
      
      cbu.setPrefs("browser.download.folderList", 2);
      cbu.setPrefs("browser.download.useDownloadDir", true);
      cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", getPath()) );
      
      saveImageURL(gContextMenu.imageURL, 0, 0, 0, 1, null, content.document);
      
      cbu.setPrefs("browser.download.folderList", run);
      cbu.setPrefs("browser.download.useDownloadDir", use);
      cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", dir) );     
   }
   
   function setPath() { 
      var fp = window.makeFilePicker();
      fp.init( window, "Укажите путь к папке для сохранения изображений", fp.modeGetFolder );
      fp.open( result => result == fp.returnOK 
               && cbu.setPrefs("CB.pathToImageFolder", convertFromUnicode("UTF-8", fp.file.path)) 
               || mItem.setAttribute("label", "Сохранить в папку: " + getPath().split("\\").pop()) );

   };

   function getPath() { 
      try { var path = gPrefService.getComplexValue("CB.pathToImageFolder", Ci.nsISupportsString).data; } 
      catch(e) { var path = 'C:\\qwerty'; };
      return path;
   };
   
})(document.getElementById("contentAreaContextMenu"), document.getElementById("context-viewimageinfo"));

Код создаёт в контекстном меня изображений пункт меню Сохранить в папку: который даёт возможность сохранять изображение без запроса в указанную папку, ПКМ на пункте меню даёт возможность быстро изменить папку для сохранения изображений.

Отсутствует

 

№967019-02-2016 14:16:47

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

Re: Custom Buttons

bunda1, полезная штука, только после выбора папки остается пункт меню Сохранить в папку: qwerty. Ну и собственно ничего не сохраняется. Прошу порт под симанку с CB v.0.0.5.8.1))) И встречный вопрос, можно сделать подобное множественным меню? чтобы был выбор из нескольких папок..

Добавлено 19-02-2016 14:31:34
Dumby, а можно как-то перед forgetClosedTab() из Session store API еще вытащить адрес закрытого таба? Вроде по наитию просится что-то типа getClosedTabData(), вот только не пойму как это делается:whistle: P.S.: даже не, погорячился, не адрес, а адреса с историей закрытого таба..

Отредактировано emlen (19-02-2016 14:37:29)


SeaMonkey 2.39 forever

Отсутствует

 

№967119-02-2016 15:28:33

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

Re: Custom Buttons

emlen пишет

только после выбора папки остается пункт меню Сохранить в папку: qwerty.

Да там была ошибка я это исправил: Сегодня 12:44:05

Отсутствует

 

№967219-02-2016 17:13:39

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

Re: Custom Buttons

emlen пишет

так↓

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

Выделить код

Код:

var folderName = "00_USO";
var parentFolderId = PlacesUtils.toolbarFolderId;

var folderId;
var parentFolder = PlacesUtils.getFolderContents(parentFolderId, true, false).root;
for(var ind = 0; ind < parentFolder.childCount; ind++) {
    var child = parentFolder.getChild(ind);
    if (child.title == folderName) {folderId = child.itemId; break;}
}
parentFolder.containerOpen = false;
if (!folderId) folderId = PlacesUtils.bookmarks.createFolder(parentFolderId, folderName, -1);

var dateString = new Date().toLocaleFormat("%Y-%m-%d %H:%M:%S");
var skipPrefixsList = [
    "chrome://sstart/content/sstart.html",
    "about:blank"
];
var subFolderId = PlacesUtils.bookmarks.createFolder(folderId, dateString, 0);
var ss = Cc["@mozilla.org/suite/sessionstore;1"].getService(Ci.nsISessionStore);

for(var tab of [...gBrowser.tabs]) {
    tab.linkedBrowser.stop();
    var uri = tab.linkedBrowser.currentURI;
    skipPrefixsList.some(prefix => uri.spec.startsWith(prefix))
        || PlacesUtils.bookmarks.insertBookmark(subFolderId, uri, -1, tab.label);
    PlacesUtils.bhistory.removePage(uri);
    gBrowser.removeTab(tab);
    ss.forgetClosedTab(window, 0);
}

emlen пишет

а можно как-то перед forgetClosedTab() из Session store API еще вытащить адрес закрытого таба? Вроде по наитию просится что-то типа getClosedTabData(), вот только не пойму как это делается:whistle: P.S.: даже не, погорячился, не адрес, а адреса с историей закрытого таба..

DOM Inspector для кого писали? Закрой вкладок и запусти код

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

Выделить код

Код:

inspectObject(
    JSON.parse(
        Cc["@mozilla.org/suite/sessionstore;1"]
            .getService(Ci.nsISessionStore)
            .getClosedTabData(window)
    )
);

Отсутствует

 

№967319-02-2016 17:30:03

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

Re: Custom Buttons

Как попёрли, одна за одной... :)

Версия 0.0.5.8.5 Выпущено February 18, 2016 122.2 kB Работает с Firefox 1.5 и выше, SeaMonkey 2.0 и выше, Thunderbird 2.0 и выше
# Исправлено: невозможно изменить внешний редактор если он был деинсталлирован или путь к нему изменился

Отсутствует

 

№967419-02-2016 18:05:03

xseed
Участник
 
Группа: Members
Зарегистрирован: 24-03-2009
Сообщений: 58
UA: Firefox 44.0

Re: Custom Buttons

LittleMontana пишет

для этого я использую расширение firegestures. а именно контекстное меню с списком вкладок у меня появляется при зажатой ПКМ и колесиком вниз. очень удобно :)

За дополнение спасибо! Но хотелось бы, чтобы при отпускании кнопки меню не исчезало и напротив каждой строки был бы крестик для закрытия вкладки, чтобы можно было выборочно закрывать вкладки без повторного вызова меню. Как это реализовать с помощью CB?


Три студента и лопата заменяют экскаватор

Отсутствует

 

№967519-02-2016 22:23:44

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

Re: Custom Buttons

bunda1 пишет
emlen пишет

только после выбора папки остается пункт меню Сохранить в папку: qwerty.

Да там была ошибка я это исправил: Сегодня 12:44:05

Прошел по ссылке, поменял код, все осталось по прежнему(((


вот тот код что забрал по ссылке↓

Выделить код

Код:

// Сохранять изображение без запроса в указанную папку из контекстного меню, от 19.02.2016. ...............  
((contextMenu, viewimage) => {
   var mItem = contextMenu.insertBefore(document.createElement("menuitem"), viewimage);
   mItem.setAttribute("label", "Сохранить в папку: " + getPath().split("\\").pop());
   addDestructor(()=> mItem.remove() );
   addEventListener("popupshowing", e=> mItem.hidden = viewimage.hidden, false, contextMenu); 
   
   mItem.onclick =e=> {
      if ( e.button ) { setPath(); return; }
   
      var run = cbu.getPrefs("browser.download.folderList"),
          use = cbu.getPrefs("browser.download.useDownloadDir"),
          dir = gPrefService.getComplexValue("browser.download.dir", Ci.nsISupportsString).data;
      
      cbu.setPrefs("browser.download.folderList", 2);
      cbu.setPrefs("browser.download.useDownloadDir", true);
      cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", getPath()) );
      
      saveImageURL(gContextMenu.imageURL, 0, 0, 0, 1, null, content.document);
      
      cbu.setPrefs("browser.download.folderList", run);
      cbu.setPrefs("browser.download.useDownloadDir", use);
      cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", dir) );     
   }
   
   function setPath() { 
      var fp = window.makeFilePicker();
      fp.init( window, "Укажите путь к папке для сохранения изображений", fp.modeGetFolder );
      fp.open( result => result == fp.returnOK 
               && cbu.setPrefs("CB.pathToImageFolder", convertFromUnicode("UTF-8", fp.file.path)) 
               || mItem.setAttribute("label", "Сохранить в папку: " + getPath().split("\\").pop()) );

   };

   function getPath() { 
      try { var path = gPrefService.getComplexValue("CB.pathToImageFolder", Ci.nsISupportsString).data; } 
      catch(e) { var path = 'C:\\qwerty'; };
      return path;
   };
   
})(document.getElementById("contentAreaContextMenu"), document.getElementById("context-viewimageinfo"));

Добавлено 19-02-2016 22:25:54
Dumby, спасибо!

Отредактировано emlen (19-02-2016 22:25:54)


SeaMonkey 2.39 forever

Отсутствует

 

Board footer

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