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

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

№17627-05-2016 14:47:53

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

Re: Замена расширений кнопками CB

Я знаю где это находится, но там сего несколько штук с осмысленными названиями, остальные с набором цифр…


Вы думаете у котов лёгкая жизнь? А вы попробуйте целый день лизать меховую шапку!

Отсутствует

 

№17727-05-2016 14:49:39

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

Re: Замена расширений кнопками CB

KOT040188
Сегодня 15:37:09

Отредактировано Stakhovsky (27-05-2016 14:54:25)

Отсутствует

 

№17827-05-2016 14:51:21

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

Re: Замена расширений кнопками CB

Stakhovsky пишет

Только там в папке extensions не все подписаны, неподписанные определить можно если перетащить в окно браузера, он предложит окно установки с названием, можно прочитать название и нажать отмена.

Вы уж извините, но я этим заниматься не хочу;)

Stakhovsky пишет

KOT040188А у вас версия 6.8.8.8?

Да.


Вы думаете у котов лёгкая жизнь? А вы попробуйте целый день лизать меховую шапку!

Отсутствует

 

№17927-05-2016 15:57:27

rgdru
Участник
 
Группа: Members
Зарегистрирован: 07-04-2013
Сообщений: 36
UA: Palemoon 26.0

Re: Замена расширений кнопками CB

Stakhovsky
https://rgho.st/7L5YsHjsC

Отсутствует

 

№18027-05-2016 19:18:39

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

Re: Замена расширений кнопками CB

KOT040188
rgdru
Поставил. Проверил. Спасибо!! То что нужно.

Отсутствует

 

№18119-05-2017 19:39:04

becool
Участник
 
Группа: Members
Зарегистрирован: 30-08-2014
Сообщений: 268
UA: Firefox 53.0

Re: Замена расширений кнопками CB

Можно ли заменить эти расширения кнопками CB?
https://addons.mozilla.org/ru/firefox/a … r-youtube/
https://addons.mozilla.org/en-US/firefo … nd-resume/

Отсутствует

 

№18219-05-2017 22:59:15

Rag
Участник
 
Группа: Members
Откуда: Краснодон
Зарегистрирован: 06-03-2017
Сообщений: 247
UA: Firefox 53.0

Re: Замена расширений кнопками CB

За кнопки не знаю,а для greasemonkey есть что то подобное
https://greasyfork.org/ru/scripts/4870-maximize-video
http://userscripts-mirror.org/scripts/show/58720

Отсутствует

 

№18320-05-2017 08:46:01

becool
Участник
 
Группа: Members
Зарегистрирован: 30-08-2014
Сообщений: 268
UA: Firefox 53.0

Re: Замена расширений кнопками CB

Rag, хотелось бы для CB, greasemonkey не установлен...

Отсутствует

 

№18420-05-2017 11:38:27

Rag
Участник
 
Группа: Members
Откуда: Краснодон
Зарегистрирован: 06-03-2017
Сообщений: 247
UA: Firefox 53.0

Re: Замена расширений кнопками CB

becool пишет:
хотелось бы для CB, greasemonkey не установлен...

Этим в полне можно заменить greasemonkey.Пусть не на все 100% но всё же.

Отсутствует

 

№18519-12-2017 00:30:03

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

Re: Замена расширений кнопками CB

Пора этой теме снова воскресать, так как, связи с переходом на FF57 много расширений отвалилось, а Custom Buttons стараниями  наших уважаемых форумчан продолжает жить.
Многие скрипты в новой версии Greasemonkey  для FF57 работают не коректно, а в Custom Buttons эти скрипты в основном идут без проблем
Вот пример - скрипты которые работают в Custom Buttons (нарыл на просторах интернета для FF57 на замену некоторых функций в устаревших расширениях Status -4-Evar и LocationBar)

1. Цветная полоса загрузки в адресной строке при загрузке страниц

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

Выделить код

Код:

//Полоса загрузки в адресной строке, цвет меняется в стиле от звездочки до звездочки
(function(){
    var cssStr = (function(){/*
            #urlbar {
                background-image: -moz-repeating-linear-gradient(top -45deg, rgba(255,255,255,0), rgba(255,255,255,0) 6px, rgba(255,255,255,0) 6px, rgba(255,255,255,0) 12px), -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(17,238,238,.7) 100%);
                background-size:0 0;
                background-repeat:repeat-x, no-repeat;
                transition: background-size 350ms ease 0s !important;
            }
            #urlbar:not([style="background-size: 0% 100%;"]) {
                animation: progress-bar-stripes 2s linear infinite;
            }
            @-moz-keyframes progress-bar-stripes {
                from {
                    background-position: 0, 0;
                }
                to {
                    background-position: 51px 0, 0;
                }
            }
    */}).toString().replace(/^.+\s|.+$/,"");
    
    var style = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\"");
    var mainW = document.getElementById("main-window");
    document.insertBefore(style, mainW);

    function main(window) {
      var {document, gBrowser} = window;
      function $(id) document.getElementById(id);
      var urlbar = $("urlbar");
      let pageProgress = 0;
      let async = makeWindowHelpers(window).async;
      var LoadingBar = {
        listener: {
          onChangeTab: function(e) {
            urlbar.style.backgroundSize = '0% 100%';
            pageProgress = 0;
          },
          onProgressChange: function(aBrowser,webProgress,request,curSelfProgress,maxSelfProgress,curTotalProgress,maxTotalProgress) {
            if (gBrowser.contentDocument === aBrowser.contentDocument) {
                var val = (curTotalProgress-1)/(maxTotalProgress-1);
                pageProgress = val;
                urlbar.style.backgroundSize = (100*val) + '% 100%';
                if (val > 0.9)
                  async(function() {
                    if (pageProgress > 0.95)
                        urlbar.style.backgroundSize = '100% 100%';
                }, 1000);
            }
          },
          onStateChange: function() {
            if (pageProgress > 0.95){
                async(function() {
                    urlbar.style.backgroundSize = '0% 100%';
                    pageProgress = 0;
                }, 1000);
            }else{
                urlbar.style.backgroundSize = '0% 100%';
            }
          }
        }
      };

      gBrowser.tabContainer.addEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
      gBrowser.addTabsProgressListener(LoadingBar.listener);

      unload(function() {
        gBrowser.tabContainer.removeEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);

        gBrowser.removeTabsProgressListener(LoadingBar.listener);
      }, window);
    }
    watchWindows(main, "navigator:browser");

    function runOnLoad(window, callback, winType) {
      window.addEventListener("load", function() {
        window.removeEventListener("load", arguments.callee, false);

        if (window.document.documentElement.getAttribute("windowtype") == winType)
          callback(window);
      }, false);
    }

    function runOnWindows(callback, winType) {
      function watcher(window) {
        try {
          callback(window);
        }
        catch(ex) {}
      }

      let browserWindows = Services.wm.getEnumerator(winType);
      while (browserWindows.hasMoreElements()) {
        let browserWindow = browserWindows.getNext();
        if (browserWindow.document.readyState == "complete")
          watcher(browserWindow);
        else
          runOnLoad(browserWindow, watcher, winType);
      }
    }

    function watchWindows(callback, winType) {
      function watcher(window) {
        try {
          callback(window);
        }
        catch(ex) {}
      }

      runOnWindows(callback, winType);

      function windowWatcher(subject, topic) {
        if (topic == "domwindowopened")
          runOnLoad(subject, watcher, winType);
      }
      Services.ww.registerNotification(windowWatcher);

      unload(function() Services.ww.unregisterNotification(windowWatcher));
    }

    function unload(callback, container) {
      let unloaders = unload.unloaders;
      if (unloaders == null)
        unloaders = unload.unloaders = [];

      if (callback == null) {
        unloaders.slice().forEach(function(unloader) unloader());
        unloaders.length = 0;
        return null;
      }

      if (container != null) {
        container.addEventListener("unload", removeUnloader, false);

        let origCallback = callback;
        callback = function() {
          container.removeEventListener("unload", removeUnloader, false);
          origCallback();
        }
      }

      function unloader() {
        try {
          callback();
        }
        catch(ex) {}
      }
      unloaders.push(unloader);


    function removeUnloader() {
        let index = unloaders.indexOf(unloader);
        if (index != -1)
          unloaders.splice(index, 1);
      }
      return removeUnloader;
    }
    
    function makeWindowHelpers(window) {
      let {clearTimeout, setTimeout} = window;

      function async(callback, delay) {
        delay = delay || 0;
        let timer = setTimeout(function() {
          stopTimer();
          callback();
        }, delay);

        function stopTimer() {
          if (timer == null)
            return;
          clearTimeout(timer);
          timer = null;
        }
      }

      return {
        async: async,
      };
    }

})();


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

Выделить код

Код:

//Подчеркивание домена

(function () {
        if (location != "chrome://browser/content/browser.xul") return;
        var URLBarInput = gURLBar.mInputField;
        var locationBar = URLBarInput.parentNode.appendChild(document.createElement("hbox"));
        locationBar.style.display = "none";
        URLBarInput.parentNode.addEventListener("click", function () {
            if (URLBarInput.style.display === "none") {
                URLBarInput.style.display = "";
                locationBar.style.display = "none";
                gURLBar.select();
            }
        }, false);
        URLBarInput.parentNode.addEventListener("mouseout", function () {
            if (document.activeElement !== gURLBar.inputField) {
                locationBar.style.display = "none";
                URLBarInput.style.display = "";
                gURLBar._urlTooltip && gURLBar._hideURLTooltip();
            }
        }, false);
        URLBarInput.addEventListener("mouseover", function (event) {
            if (event.ctrlKey || document.activeElement === gURLBar.inputField) {
                return;
            }
            locationBar.parentNode.removeChild(locationBar);
            locationBar = URLBarInput.parentNode.appendChild(document.createElement("hbox"));
            locationBar.style.overflow = "hidden";
            locationBar.style.width = URLBarInput.clientWidth + "px";
            gURLBar.value.split("?")[0].split("/").map(function (value, index, arr) {
                return index + 1 === arr.length ? (gURLBar.value.split("?")[1] ? (value + "?" + gURLBar.value.split("?")[1]) : value) : value;
            }).map(function (value, index, arr) {
                var sec = locationBar.appendChild(document.createElement("label"));
                sec.style.margin = 0;
                sec.value = value;
                if (index < arr.length - 1) sec.value = value.replace(/[^\/]$/, "$&/");
                index === 0 && (sec.style.marginLeft = "1px");
                if (index === 0 && /:\/$/.test(sec.value)) {
                    sec.value += "/";
                } else {
                    sec.onmouseover = function () {
                        this.style.textDecoration = "underline";
                        this.style.cursor = "pointer";
                    }
                    sec.onmouseout = function () {
                        this.style.textDecoration = "";
                    }
                    sec.onclick = function (event) {
                        if (event.button === 0) {
                            loadURI(URLBarInput.value.split(this.value)[0] + this.value);
                            while (this.nextSibling) {
                                this.nextSibling.parentNode.removeChild(this.nextSibling);
                            }
                            event.stopPropagation();
                        }
                    }
                    URLBarInput.style.display = "none";
                    locationBar.style.display = "";
                }
            })
        }, false);
    })();


3. Осталось найти, может кто поможет, средствами кнопок или стилями
-  выделение домена другим цветом в адресной строке
- создание адонбара
- переноса кнопки Reload в адресную строку

Отсутствует

 

№18619-12-2017 00:36:25

sonyas75
Участник
 
Группа: Members
Откуда: Ставрополь
Зарегистрирован: 22-03-2011
Сообщений: 557
UA: Firefox 57.0

Re: Замена расширений кнопками CB

Andrey_Krropotkin пишет

Подчеркивание различных частей адреса в адресной строке и переход по ним

вау! сенькью

Отсутствует

 

№18719-12-2017 10:19:40

Viatcheslav
Участник
 
Группа: Members
Откуда: г. Бобруйск, Беларусь
Зарегистрирован: 23-11-2016
Сообщений: 324
UA: Firefox 57.0

Re: Замена расширений кнопками CB

Andrey_Krropotkin пишет

3. Осталось найти, может кто поможет, средствами кнопок или стилями
- создание адонбара

'Classic' CSS tweaks for Firefox 57+ - внутри архива есть файл userChrome.css. Начиная со строки 355 (версия 1.5.2) описывается создание аддон-бара. Если раскомментировать строку 361, в нижней части главного окна появляется эта самая панель, сам пользоваться ей не пробовал

Andrey_Krropotkin пишет

- переноса кнопки Reload в адресную строку

Наверное, не совсем по теме, но существует дополнение - Reload in address bar. И делает оно то, о чём Вы спрашиваете

Andrey_Krropotkin пишет

Цветная полоса загрузки в адресной строке при загрузке страниц

Отличная замена прогрессбара :) Объясните, если можно, подробнее - как поменять цвет заливки? Для определённости - основной цвет Hex #80ff80, rgb(128, 255, 128). Спасибо

Отредактировано Viatcheslav (19-12-2017 13:07:15)

Отсутствует

 

№18819-12-2017 13:09:24

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

Re: Замена расширений кнопками CB

Viatcheslav
1. Поменять цвет заливки можно в 5 строке background-image, меняйте значения rgba, эксперементируйте.
2. Дополнение ради одной кнопки - это несерьезно
3. Про аддон-бар - я в курсе про этот ресурс, но как я понял, там имитация, а не полноценная замена, т.е. нельзя переносить эту панель ничего, только вручную прописывать в стиле, что не очень хорошо. Если я не прав, то поправьте.

Отсутствует

 

№18919-12-2017 21:48:38

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

Re: Замена расширений кнопками CB

Нашел у alice0775 скрипт
Его смысл - создает в конце адресной строки дополнительную панель, на которую можно перемещать любые кнопки, в том числе и Feed-buton и  Stop-Reload-buton
Вот что получилось

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

Выделить код

Код:

/*Initialization Code*/

  var addToolbarInsideLocationBar = {
     init: function() {

            const kNSXUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
        Components.utils.import("resource:///modules/CustomizableUI.jsm");
    
        //создаем toolbar
        let toolbar = document.createElementNS(kNSXUL, "toolbar");
        toolbar.setAttribute("id", "ucjs-Locationbar-toolbar");
        toolbar.setAttribute("customizable", "true");
        toolbar.setAttribute("mode", "icons");
        toolbar.setAttribute("iconsize", "small");
        toolbar.setAttribute("context", "toolbar-context-menu");
        toolbar.setAttribute("class", "toolbar-primary chromeclass-toolbar customization-target");
        toolbar.setAttribute("fullscreentoolbar", "true");
        toolbar.setAttribute("toolbarname", "Панель в LocationBar");
        toolbar.setAttribute("toolboxid", "navigator-toolbox");
        toolbar.setAttribute("hidden", "true");
        setTimeout(function(){toolbar.removeAttribute("hidden");}, 0)
         // блокировать дублирование пункта при открытии настройки панелей
           if ( document.getElementById("ucjs-Locationbar-toolbar") ) return;
                
     //регистрируем toolbar.id
        if (CustomizableUI.getAreaType("ucjs-Locationbar-toolbar")) {
        } else
          try {
            CustomizableUI.registerArea("ucjs-Locationbar-toolbar", {
              type: CustomizableUI.TYPE_TOOLBAR,
               defaultPlacements: ["feed-button"]
            });
          } catch(e) {}
    
        let ref = this.getInsertPoint();
        ref.appendChild(toolbar);
        gURLBar.onDrop_addToolbarInsideLocationBar = gURLBar.onDrop;
        gURLBar.onDrop = function(event) {
          var toolbar = document.getElementById("ucjs-Locationbar-toolbar");
          var target = event.originalTarget;
          while(target) {
            if (target == toolbar) {
              return;
            }
            target = target.parentNode;
          }
          
          gURLBar.onDrop_addToolbarInsideLocationBar(event);
        };
        window.addEventListener("beforecustomization", this, true);
       // BookmarkingUI._updateCustomizationState();
      },
    
      getInsertPoint: function() {
        return (document.getElementById("urlbar-icons")
                || document.getElementById("page-action-buttons")
               );
      },
    
       handleEvent: function(event) {
        let toolbar = document.getElementById("ucjs-Locationbar-toolbar");
        switch(event.type) {
            case "beforecustomization":
            window.addEventListener("customizationending", this, false);
            this.placeholder = toolbar.parentNode.insertBefore(document.createElement("hbox"), toolbar);
            let ref = document.getElementById("nav-bar-customization-target");
            toolbar.setAttribute("tooltiptext", "Toolbar inside LocationBar");
            ref.parentNode.insertBefore(toolbar, ref);
            break;
            case "customizationending":
            window.removeEventListener("customizationending", this, false);
            this. placeholder.parentNode.replaceChild(toolbar, this. placeholder);
            toolbar.removeAttribute("tooltiptext");
            break;
        }
       }  
    };
  addToolbarInsideLocationBar.init();


Особенность в том, что кнопки надо добавлять в следующем порядке:
1. Открываем вкладку "Настройка Firefox" (где находятся все значки)
2. В левой части Nav-bara появляется эта панель и на нее перетаскиваем или удаляем нужные кнопки
Вот картинки
скрытый текст

Отредактировано Andrey_Krropotkin (26-12-2017 22:23:26)

Отсутствует

 

№19020-12-2017 00:06:16

Viatcheslav
Участник
 
Группа: Members
Откуда: г. Бобруйск, Беларусь
Зарегистрирован: 23-11-2016
Сообщений: 324
UA: Firefox 57.0

Re: Замена расширений кнопками CB

Andrey_Krropotkin пишет

3. Про аддон-бар - я в курсе про этот ресурс, но как я понял, там имитация, а не полноценная замена, т.е. нельзя переносить эту панель ничего, только вручную прописывать в стиле, что не очень хорошо. Если я не прав, то поправьте.

Да, всё верно. Я пробовал эту панель включать, но после появления кнопки на неё обычным "перетаскиванием" не переносятся - чистейшая эмуляция

Andrey_Krropotkin, помогите, пожалуйста, разобраться с работой прогресс-бара. Фрагмент кода, отвечающий за стиль, насколько я понял, такой:

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

Выделить код

Код:

background-image: -moz-repeating-linear-gradient(top -45deg, rgba(255,255,255,0), rgba(255,255,255,0) 6px, rgba(255,255,255,0) 6px, rgba(255,255,255,0) 12px), -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(17,238,238,.7) 100%);
                background-size:0 0;


За цвет отвечает параметр rgba(17,238,238, .7) - тут разобрался. А вот как отключить анимацию справа-налево (возврат шкалы в исходное положение) или сделать её полностью прозрачной - не пойму :blush:

Отсутствует

 

№19120-12-2017 03:15:26

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 606
UA: Firefox 48.0

Re: Замена расширений кнопками CB

Andrey_Krropotkin пишет

3. Осталось найти, может кто поможет, средствами кнопок или стилями
- создание адонбара

Если я вас правильно понял, то посмотрите здесь: https://forum.mozilla-russia.org/viewto … 46#p748946


«The Truth Is Out There»

Отсутствует

 

№19220-12-2017 08:20:54

Viatcheslav
Участник
 
Группа: Members
Откуда: г. Бобруйск, Беларусь
Зарегистрирован: 23-11-2016
Сообщений: 324
UA: Firefox 57.0

Re: Замена расширений кнопками CB

unter_officer пишет

то посмотрите здесь: https://forum.mozilla-russia.org/viewto … 46#p748946

Там такой же вариант эмуляции, а именно

Andrey_Krropotkin пишет

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

Отсутствует

 

№19320-12-2017 08:58:25

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

Re: Замена расширений кнопками CB

Viatcheslav Я сам пока не разбирался, но вот посмотрите на статью где расписано все про linear-gradient

Отсутствует

 

№19420-12-2017 09:00:18

mssign
Участник
 
Группа: Members
Зарегистрирован: 04-11-2009
Сообщений: 21
UA: Firefox 57.0

Re: Замена расширений кнопками CB

Viatcheslav пишет

а именно

https://forum.mozilla-russia.org/viewtopic.php?pid=748946#p748946
Все переносится через персонализацию.

Отредактировано mssign (20-12-2017 09:05:07)

Отсутствует

 

№19520-12-2017 10:27:00

Viatcheslav
Участник
 
Группа: Members
Откуда: г. Бобруйск, Беларусь
Зарегистрирован: 23-11-2016
Сообщений: 324
UA: Firefox 57.0

Re: Замена расширений кнопками CB

mssign пишет

https://forum.mozilla-russia.org/viewtopic.php?pid=748946#p748946
Все переносится через персонализацию

Да, прошу прощение :blush: Или свой какой-то стиль блокировал, или версия панели ещё до исправления была... Короче, на чистом userChrome.css из архива Vitaliy V. аддон-бар включается, кнопки переносятся :)

Отсутствует

 

№19620-12-2017 10:36:09

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

Re: Замена расширений кнопками CB

ViatcheslavПопробуй этот вариант

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

Выделить код

Код:

var cssStr = (function(){/*
            #urlbar {
                background-image: -moz-repeating-linear-gradient(top -45deg, rgba(255,255,255,0), rgba(255,255,255,0) 6px, rgba(255,255,255,0) 6px, rgba(255,255,255,0) 12px), -moz-linear-gradient(left, #33FF66 0%, #33FF66 100%);
                background-size:0 0;
             background-repeat:repeat-x, no-repeat;
                    }
            #urlbar:not([connecting])::after {
                        display:none;
                    }
            @-moz-keyframes progress-bar-stripes {
                from {
                    background-position: 0, 0;
                }
                to {
                    background-position: 51px 0, 0;
                }
            }
    */}).toString().replace(/^.+\s|.+$/,"");


где заливка #33FF66 0%- от какого цвета, #33FF66 100% - до какого

Отсутствует

 

№19720-12-2017 10:54:14

Viatcheslav
Участник
 
Группа: Members
Откуда: г. Бобруйск, Беларусь
Зарегистрирован: 23-11-2016
Сообщений: 324
UA: Firefox 57.0

Re: Замена расширений кнопками CB

Andrey_Krropotkin пишет

ViatcheslavПопробуй этот вариант

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

Выделить код

Код:

var cssStr = (function(){/*
            #urlbar {
                background-image: -moz-repeating-linear-gradient(top -45deg, rgba(255,255,255,0), rgba(255,255,255,0) 6px, rgba(255,255,255,0) 6px, rgba(255,255,255,0) 12px), -moz-linear-gradient(left, #33FF66 0%, #33FF66 100%);
                background-size:0 0;
             background-repeat:repeat-x, no-repeat;
                    }
            #urlbar:not([connecting])::after {
                        display:none;
                    }
            @-moz-keyframes progress-bar-stripes {
                from {
                    background-position: 0, 0;
                }
                to {
                    background-position: 51px 0, 0;
                }
            }
    */}).toString().replace(/^.+\s|.+$/,"");

Вообще не работает - по краней мере, никакого прогресс-бара в адресной строке нет :(

Отредактировано Viatcheslav (20-12-2017 10:58:57)

Отсутствует

 

№19820-12-2017 11:50:55

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

Re: Замена расширений кнопками CB

Viatcheslav Я выложил кусок кода для замены в старом коде, а не для замены всего кода
Вот весь код кнопки

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

Выделить код

Код:

//Полоса загрузки в адресной строке
 
(function(){
//Location Bar Enhancer5.1;Loading Bar0.3.0
    var cssStr = (function(){/*
            #urlbar {
                background-image: -moz-repeating-linear-gradient(top -45deg, rgba(255,255,255,0), rgba(255,255,255,0) 6px, rgba(255,255,255,0) 6px, rgba(255,255,255,0) 12px), -moz-linear-gradient(left, #33FF66 0%, #33FF66 100%);
                background-size:0 0;
             background-repeat:repeat-x, no-repeat;
           //  transition: background-size 350ms ease 0s !important;
            }
            #urlbar:not([connecting])::after {
                        display:none;
                    }
            @-moz-keyframes progress-bar-stripes {
                from {
                    background-position: 0, 0;
                }
                to {
                    background-position: 51px 0, 0;
                }
            }
    */}).toString().replace(/^.+\s|.+$/,"");
    
    var style = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\"");
    var mainW = document.getElementById("main-window");
    document.insertBefore(style, mainW);

    function main(window) {
      var {document, gBrowser} = window;
      function $(id) document.getElementById(id);
      var urlbar = $("urlbar");
      let pageProgress = 0;
      let async = makeWindowHelpers(window).async;
      var LoadingBar = {
        listener: {
          onChangeTab: function(e) {
            urlbar.style.backgroundSize = '0% 100%';
            pageProgress = 0;
          },
          
          onProgressChange: function(aBrowser,webProgress,request,curSelfProgress,maxSelfProgress,curTotalProgress,maxTotalProgress) {
            if (gBrowser.contentDocument === aBrowser.contentDocument) {
                var val = (curTotalProgress-1)/(maxTotalProgress-1);
                pageProgress = val;
                urlbar.style.backgroundSize = (100*val) + '% 100%';
                if (val > 0.9)
                  async(function() {
                    if (pageProgress > 0.95)
                        urlbar.style.backgroundSize = '100% 100%';
                }, 1000);
            }
          },
          
          onStateChange: function() {
            if (pageProgress > 0.95){
                async(function() {
                    urlbar.style.backgroundSize = '0% 100%';
                    pageProgress = 0;
                }, 1000);
            }else{
                urlbar.style.backgroundSize = '0% 100%';
            }
          }
        }
      };

      gBrowser.tabContainer.addEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
      gBrowser.addTabsProgressListener(LoadingBar.listener);

      unload(function() {
        gBrowser.tabContainer.removeEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);

        gBrowser.removeTabsProgressListener(LoadingBar.listener);
      }, window);
    }

    watchWindows(main, "navigator:browser");

    function runOnLoad(window, callback, winType) {
      window.addEventListener("load", function() {
        window.removeEventListener("load", arguments.callee, false);

        if (window.document.documentElement.getAttribute("windowtype") == winType)
          callback(window);
      }, false);
    }

    function runOnWindows(callback, winType) {
      function watcher(window) {
        try {
          callback(window);
        }
        catch(ex) {}
      }

      let browserWindows = Services.wm.getEnumerator(winType);
      while (browserWindows.hasMoreElements()) {
        let browserWindow = browserWindows.getNext();
        if (browserWindow.document.readyState == "complete")
          watcher(browserWindow);
        else
          runOnLoad(browserWindow, watcher, winType);
      }
    }

    function watchWindows(callback, winType) {
      function watcher(window) {
        try {
          callback(window);
        }
        catch(ex) {}
      }

      runOnWindows(callback, winType);

      function windowWatcher(subject, topic) {
        if (topic == "domwindowopened")
          runOnLoad(subject, watcher, winType);
      }
      Services.ww.registerNotification(windowWatcher);

      unload(function() Services.ww.unregisterNotification(windowWatcher));
    }

    function unload(callback, container) {
      let unloaders = unload.unloaders;
      if (unloaders == null)
        unloaders = unload.unloaders = [];

      if (callback == null) {
        unloaders.slice().forEach(function(unloader) unloader());
        unloaders.length = 0;
        return null;
      }

      if (container != null) {
        container.addEventListener("unload", removeUnloader, false);

        let origCallback = callback;
        callback = function() {
          container.removeEventListener("unload", removeUnloader, false);
          origCallback();
        }
      }

      function unloader() {
        try {
          callback();
        }
        catch(ex) {}
      }
      unloaders.push(unloader);


    function removeUnloader() {
        let index = unloaders.indexOf(unloader);
        if (index != -1)
          unloaders.splice(index, 1);
      }
      return removeUnloader;
    }
    
    function makeWindowHelpers(window) {
      let {clearTimeout, setTimeout} = window;

      function async(callback, delay) {
        delay = delay || 0;
        let timer = setTimeout(function() {
          stopTimer();
          callback();
        }, delay);

        function stopTimer() {
          if (timer == null)
            return;
          clearTimeout(timer);
          timer = null;
        }
      }

      return {
        async: async,
      };
    }

})();

Отредактировано Andrey_Krropotkin (20-12-2017 11:55:53)

Отсутствует

 

№19920-12-2017 13:04:34

Viatcheslav
Участник
 
Группа: Members
Откуда: г. Бобруйск, Беларусь
Зарегистрирован: 23-11-2016
Сообщений: 324
UA: Firefox 57.0

Re: Замена расширений кнопками CB

Andrey_Krropotkin пишет

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

Семён Семёныч, а я даже и не посмотрел :blush:

Andrey_Krropotkin пишет

Вот весь код кнопки

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

Выделить код

Код:

//Полоса загрузки в адресной строке
 
(function(){
//Location Bar Enhancer5.1;Loading Bar0.3.0
    var cssStr = (function(){/*
            #urlbar {
                background-image: -moz-repeating-linear-gradient(top -45deg, rgba(255,255,255,0), rgba(255,255,255,0) 6px, rgba(255,255,255,0) 6px, rgba(255,255,255,0) 12px), -moz-linear-gradient(left, #33FF66 0%, #33FF66 100%);
                background-size:0 0;
             background-repeat:repeat-x, no-repeat;
           //  transition: background-size 350ms ease 0s !important;
            }
            #urlbar:not([connecting])::after {
                        display:none;
                    }
            @-moz-keyframes progress-bar-stripes {
                from {
                    background-position: 0, 0;
                }
                to {
                    background-position: 51px 0, 0;
                }
            }
    */}).toString().replace(/^.+\s|.+$/,"");
    
    var style = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\"");
    var mainW = document.getElementById("main-window");
    document.insertBefore(style, mainW);

    function main(window) {
      var {document, gBrowser} = window;
      function $(id) document.getElementById(id);
      var urlbar = $("urlbar");
      let pageProgress = 0;
      let async = makeWindowHelpers(window).async;
      var LoadingBar = {
        listener: {
          onChangeTab: function(e) {
            urlbar.style.backgroundSize = '0% 100%';
            pageProgress = 0;
          },
          
          onProgressChange: function(aBrowser,webProgress,request,curSelfProgress,maxSelfProgress,curTotalProgress,maxTotalProgress) {
            if (gBrowser.contentDocument === aBrowser.contentDocument) {
                var val = (curTotalProgress-1)/(maxTotalProgress-1);
                pageProgress = val;
                urlbar.style.backgroundSize = (100*val) + '% 100%';
                if (val > 0.9)
                  async(function() {
                    if (pageProgress > 0.95)
                        urlbar.style.backgroundSize = '100% 100%';
                }, 1000);
            }
          },
          
          onStateChange: function() {
            if (pageProgress > 0.95){
                async(function() {
                    urlbar.style.backgroundSize = '0% 100%';
                    pageProgress = 0;
                }, 1000);
            }else{
                urlbar.style.backgroundSize = '0% 100%';
            }
          }
        }
      };

      gBrowser.tabContainer.addEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
      gBrowser.addTabsProgressListener(LoadingBar.listener);

      unload(function() {
        gBrowser.tabContainer.removeEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);

        gBrowser.removeTabsProgressListener(LoadingBar.listener);
      }, window);
    }

    watchWindows(main, "navigator:browser");

    function runOnLoad(window, callback, winType) {
      window.addEventListener("load", function() {
        window.removeEventListener("load", arguments.callee, false);

        if (window.document.documentElement.getAttribute("windowtype") == winType)
          callback(window);
      }, false);
    }

    function runOnWindows(callback, winType) {
      function watcher(window) {
        try {
          callback(window);
        }
        catch(ex) {}
      }

      let browserWindows = Services.wm.getEnumerator(winType);
      while (browserWindows.hasMoreElements()) {
        let browserWindow = browserWindows.getNext();
        if (browserWindow.document.readyState == "complete")
          watcher(browserWindow);
        else
          runOnLoad(browserWindow, watcher, winType);
      }
    }

    function watchWindows(callback, winType) {
      function watcher(window) {
        try {
          callback(window);
        }
        catch(ex) {}
      }

      runOnWindows(callback, winType);

      function windowWatcher(subject, topic) {
        if (topic == "domwindowopened")
          runOnLoad(subject, watcher, winType);
      }
      Services.ww.registerNotification(windowWatcher);

      unload(function() Services.ww.unregisterNotification(windowWatcher));
    }

    function unload(callback, container) {
      let unloaders = unload.unloaders;
      if (unloaders == null)
        unloaders = unload.unloaders = [];

      if (callback == null) {
        unloaders.slice().forEach(function(unloader) unloader());
        unloaders.length = 0;
        return null;
      }

      if (container != null) {
        container.addEventListener("unload", removeUnloader, false);

        let origCallback = callback;
        callback = function() {
          container.removeEventListener("unload", removeUnloader, false);
          origCallback();
        }
      }

      function unloader() {
        try {
          callback();
        }
        catch(ex) {}
      }
      unloaders.push(unloader);


    function removeUnloader() {
        let index = unloaders.indexOf(unloader);
        if (index != -1)
          unloaders.splice(index, 1);
      }
      return removeUnloader;
    }
    
    function makeWindowHelpers(window) {
      let {clearTimeout, setTimeout} = window;

      function async(callback, delay) {
        delay = delay || 0;
        let timer = setTimeout(function() {
          stopTimer();
          callback();
        }, delay);

        function stopTimer() {
          if (timer == null)
            return;
          clearTimeout(timer);
          timer = null;
        }
      }

      return {
        async: async,
      };
    }

})();

Ну так это совсем другое дело :) Благодарствую премного :beer:

UPDATE

Andrey_Krropotkin
, не сочтите за дерзость - а можно добавить отображение степени загрузки страницы в %, как здесь - https://www.w3schools.com/howto/tryit.a … r_label_js? Для удобства метка пропадает в конце загрузки страницы вместе с прогресс-баром. Это было бы близким к совершенству :blush:

Отредактировано Viatcheslav (20-12-2017 13:37:08)

Отсутствует

 

№20020-12-2017 15:34:19

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

Re: Замена расширений кнопками CB

Viatcheslav Не получается. Проценты накладываются на адрес и потом висят в адресной строке. Спросите у более опытных.

Отсутствует

 

Board footer

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