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

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№195119-01-2018 11:13:03

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

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

Отсутствует

 

№195219-01-2018 11:28:16

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 58.0

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

Вопрос! можно ли менять кнопкой путь? Пример:

network.proxy.autoconfig_url строка  file:///D:/Proxy.pac
                                                            file:///C:/Proxy.pac

Отсутствует

 

№195319-01-2018 12:20:34

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

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

drage2

Выделить код

Код:

var path1 = 'file:///D:/Proxy.pac'
var path2 = 'file:///C:/Proxy.pac';
var s = 'network.proxy.autoconfig_url';

this._handleClick =()=> {
   var path = getPath() == path1 ? path2 : path1; 
   cbu.setPrefs(s, convertFromUnicode("UTF-8", path));
};

function convertFromUnicode(charset, str) {
   var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter);
   converter.charset = charset;
   str = converter.ConvertFromUnicode(str);
   return str + converter.Finish();
};

function getPath() {     
   try { return Services.prefs.getComplexValue(s, Ci.nsISupportsString).data } 
   catch(e) { return path1 };
};

function toggleImage() { 
   var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon");
   icon.src = getPath() == path1  
   ? self.image 
   : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAD1BMVEUfact50/fF+v/M//////8mt18DAAAABXRSTlP/////APu2DlMAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAgdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1Yu5EqJAAAADhJREFUeJxjcHFgAAIXFwYXB2NjYwYWEMNQUJCZAcYwYIEwGBigDEFhDIYQ+QygpUZKIAbIGQwsANX+EGaBLn8yAAAAAElFTkSuQmCC';
};
toggleImage();
gPrefService.addObserver(s, toggleImage, false);
addDestructor(()=> gPrefService.removeObserver(s, toggleImage));

Отсутствует

 

№195419-01-2018 12:36:10

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

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

О, спасибо ;) Мне казалось, что кроме Yet Another Smooth Scrolling ничего достойного нет

Отсутствует

 

№195519-01-2018 13:01:54

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 499
UA: Firefox 45.0

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

так же можно эту кнопку заюзать  №148
----
Нашел отличную кнопку, но как обычно и бывает, она на половину хороша :D делает то, но не там. TabSelect переключает вкладки. Попробовал этот кусок кода
посадить на клик по вкладке(из других примеров в теме [CB]Tab Clicking Options но никак.
Сама кнопка такая, отдельная на панель. Запишу тут, ибо сайт чета не открываеццо:

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

Выделить код

Код:

"use strict"

this.onclick = function(e) {
  switch (e.button) {
    case 0:
      var tabs = gBrowser.visibleTabs || gBrowser.tabs,
          recentlyUsedTabs = Array.sort(tabs, function(tab1, tab2) { return tab2.lastAccessed - tab1.lastAccessed }),
          tab = tabs[recentlyUsedTabs.indexOf(gBrowser.selectedTab) + 1] || null;
      if (tab) gBrowser.selectedTab = tab;
      break;
    case 1:
      var tabs = gBrowser.tabContainer.childNodes;
      for (var i = 0, cnt = 0; i < tabs.length; i++) if (tabs[i].hasAttribute("pinned")) cnt++;
      gBrowser.selectedTab = tabs[cnt];
      break;
    case 2:
      if (e.shiftKey || e.ctrlKey) {
        this.oncontextmenu = function() { return true; }
        return;
      }
      this.oncontextmenu = function() { return false; }
      var tabs = gBrowser.tabContainer.childNodes,
          last = tabs.length - 1;
      gBrowser.selectedTab = tabs[last];
  }
  var sTab = gBrowser.selectedTab;
  sTab.scrollIntoView(true);
}

this.tooltipText = this.label + "\n\
 \u2022 Left-click > Last Selected Tab\n\
 \u2022 Middle-click > First Unpinned Tab\n\
 \u2022 Right-click > Last Tab\n\
 \u2022 Shift/Ctrl + Right-click > Context Menu";
 
// Button Name: Tab Select
// Created: Feb 8, 2017
// Updated: July 24, 2017 shift or ctrl + right-click for custombuttons-contextpopup
// Author: Sonny aka srazzano
// Homepage: http://custombuttons.sourceforge.net/forum/viewtopic.php?f=4&t=6420
// Description: See homepage
// Support: srazzano@gmail.com


Взял оттудава только то что проблемное, то что по ЛКМ хочу чтоб было на вкладке:
скрытый текст

Выделить код

Код:

// Клик по активной вкладке - переход на предыд. посещенную... неробит
this.onDestroy = function() {
    removeEventListener("click", TabSwitch, false, gBrowser.mTabContainer);
};

  function TabSwitch(e) {

       switch (e.button) {
            case 0:

             var tabs = gBrowser.visibleTabs || gBrowser.tabs,
             recentlyUsedTabs = Array.sort(tabs, function(tab1, tab2) { return tab2.lastAccessed - tab1.lastAccessed }),
             tab = tabs[recentlyUsedTabs.indexOf(gBrowser.selectedTab) + 1] || null;
              if (e.target == gBrowser.mCurrentTab ) gBrowser.selectedTab = tab; 

            break;
           }

   };
   
   addEventListener("click", TabSwitch, false, gBrowser.mTabContainer);


на активной вкладке как и надо - переключается на предыд. посещенную, - но нельзя выбрать вкладку, срабатывает этот код опять . ЕЯПП , то в момент выбора она мгновенно становится тоже  mCurrentTab и код опять на ней срабатывает еще раз.
если событие поменять на mousedown, не лучше... выбрать тогда нельзя вкладки. :sick:
Помогите знатоки!


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№195619-01-2018 13:09:50

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 57.0

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

bunda1
Ти си краљ дугмади! (Король кнопок)
Жаль в 58 не работает...мульти. выкл. CB 7pre

Отредактировано drage2 (19-01-2018 14:07:40)

Отсутствует

 

№195719-01-2018 14:30:56

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

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

mokujin пишет

Помогите знатоки!

onDestroy там совсем лишний. И я не понял что ты хочешь добится?

Отсутствует

 

№195819-01-2018 14:56:23

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 499
UA: Firefox 45.0

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

клик по активной вкладке - переход на пред. активную. Создатель кнопки написал этот код, который вычисляет пред.активную вкладку и переходит на нее, но сделал это в кнопке. А я хочу это все чтоб было на активной вкладке.
в оригинале это отдельная кнопка на которую надо жмакать, а я хочу повесить это на вкладку(активную) чтоб клик (LeftMouseClick) по активной(выбранной) вкладке делал тоже самое что и кнопка. CTRL+TAB, TabFlipping или как там еще это назвать можно... из Оперы поведение. Чел сделал, но не так как хотелось :)


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№195919-01-2018 19:20:32

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

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

mokujin пишет

клик по активной вкладке - переход на пред. активную. Создатель кнопки написал этот код, который вычисляет пред.активную вкладку и переходит на нее, но сделал это в кнопке. А я хочу это все чтоб было на активной вкладке.

А если переделать Активировать вкладку наведением курсора немного над вкладкой или:

Выделить код

Код:

// ЛКМ + ПКМ на текущий таб, переместить таб в новую группу, от 06.12.2014. ................................
function moveTabToNewGroup(e) {     

   if ( e.button == 2 && this.leftButtonDown ) {
               
        // временно блокируем контекстное меню вкладки
        addEventListener("popupshowing", function f(e) {
           e.preventDefault();        
           removeEventListener( e.type, f );
        });           
        
        // переместить текущий таб в новую группу
        setTimeout(function() { 
           var tab = e.target;
           if ( gBrowser.visibleTabs.length == 1 ) return; 
           TabView.moveTabTo( tab, null );
           window.gBrowser.selectedTab = tab;
        }, 50 );
        }
   
   if ( e.button == 0 ) {
        this.leftButtonDown = true;
        
        // сбросить переменную и обработчики       
        function c(e) { 
           this.leftButtonDown = false;
           removeEventListener( e.type, c );
        };
        addEventListener("mouseup", c );
        addEventListener("mousemove", c );
        }       
};
addEventListener("mousedown", moveTabToNewGroup, true, gBrowser.tabContainer);

или:

Выделить код

Код:

// Двойной левый клик на табе закрывает страницу, двойной правый имитирует нажатие на звёздочку в адресной строке ..................
function closeAddBookTab(e) {
   if ( e.target.localName != "tab" ) return;
        e.preventDefault();
        e.stopPropagation();
   
   if ( e.button == 0 ) { gBrowser.removeCurrentTab() };   
    
   if ( e.button == 2 ) {
        PlacesCommandHook.bookmarkPage( e.target.linkedBrowser, undefined, true );
        setTimeout(function() document.getElementById("tabContextMenu").hidePopup(), 0);

        var panel = document.getElementById("editBookmarkPanel");
        addEventListener("popupshown", function() {
            removeEventListener("popupshown", arguments.callee, true, panel );
            
            panel.moveTo( e.screenX, e.screenY ); // переместить рядом с вкладкой
            document.getElementById('editBMPanel_foldersExpander').click(); // показать все папки закладок
        }, true, panel );
    }     
};
addEventListener("dblclick", closeAddBookTab, false, gBrowser.mTabContainer);

Добавлено 19-01-2018 19:21:49
или:

Выделить код

Код:

// Настройка длинного клика мыши для вкладки ..............
addEventListener("mousedown", e=> {
   var targ = e.target;
   if ( e.button || targ.localName !== "tab" ) return;
       
   targ.onclick =()=> clearTimeout(targ.timer);
     
   targ.timer = setTimeout(()=> {
      gBrowser.removeTabsToTheEndFrom(gBrowser.mCurrentTab);
   }, 450);
       
}, true, gBrowser.mTabContainer);

Отредактировано bunda1 (19-01-2018 19:45:29)

Отсутствует

 

№196019-01-2018 20:07:25

SendInfo
.
 
Группа: Members
Зарегистрирован: 14-02-2011
Сообщений: 271
UA: Firefox 42.0

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

mokujin пишет

клик по активной вкладке - переход на пред. активную. Создатель кнопки написал этот код, который вычисляет пред.активную вкладку и переходит на нее, но сделал это в кнопке. А я хочу это все чтоб было на активной вкладке.в оригинале это отдельная кнопка на которую надо жмакать, а я хочу повесить это на вкладку(активную) чтоб клик (LeftMouseClick) по активной(выбранной) вкладке делал тоже самое что и кнопка. CTRL+TAB, TabFlipping или как там еще это назвать можно... из Оперы поведение. Чел сделал, но не так как хотелось

Надо с другой стороны зайти. ЛКМ по активной вкладке "нажимает" CTRL+TAB

Отсутствует

 

№196119-01-2018 20:23:12

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

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

drage2 пишет

Кнопка "увеличить изображение" аж 2014г. Работает,но не с мультипроцессом...FF58 - можно и выкл. мульти, так с запуском тормоза. Кнопку саму нельзя рихтануть?
Жалко.Уделал эту 58 , а только эту кнопку - никак....

Да, есть такая проблема. Перестал работать triggerNode в:

Выделить код

Код:

// отслеживать открытие контекстного меню на странице ....
   addEventListener("popupshowing", function(e) { 

      menuitem.hidden = !gContextMenu.onImage; // скрывать пункт если не контекстное меню изображений         
      if ( !gContextMenu.onImage ) return;

      // получить координаты и размеры изображения
      var trg = e.target.triggerNode;
      g.win = trg.ownerDocument.defaultView;
      g.rect = trg.getBoundingClientRect();

   }, true, contextMenu);

Может кто подскажет чем его заменить?

Отсутствует

 

№196219-01-2018 21:25:26

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 57.0

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

bunda1

bunda1 пишет

отслеживать открытие контекстного меню на странице

Это проблема, но ...В 57 мульти не нужен и кнопка работает. А в 58 финал это уже не актуально, кнопка "путь к proxy.pac" не будет работать в 58 никогда...
Там итак косяков навалом, и это ещё.Кстати, этот мультирежим не дает скачать видео кое-где,какого,а?  http://kinokrad.co/   IDM - молчит пока мульти...

Отсутствует

 

№196319-01-2018 21:28:10

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

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

drage2 пишет

Кстати, этот мультирежим не дает скачать видео кое-где,какого,а?  http://kinokrad.co/   IDM - молчит пока мульти...

Да, к сожалению мультирежим ломает многие Сustom Buttons кнопки и коды :(

Отсутствует

 

№196420-01-2018 04:09:43

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

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

Andrey_Krropotkin пишет

в любом меню в пункте "Веб - разработка" удваивается количество пунктов начиная  от Панели разработчика до Других инструментов. Или может это только у меня ?

Да, действительно, пункты множатся.
Попытаюсь избежать, но не уверен.

bunda1 пишет

Двойное нажатие ПКМ не вызывает меню СВ, потому что в Сustom Buttons что-то сломано и иеперь в всех кнопках меню нельзя вызвать двойным нажатием ПКМ.

Двойное нажатие ПКМ не вызывает меню СВ потому,
что в коде кнопки на это есть прямой запрет. А вот так, например, вызывает.

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

Выделить код

Код:

// Настройка функций кликов мыши для кнопки ...............
/*
this.onclick =e=> {
   if ( e.button == 0 ) GrabScroll.toggle();
       
   if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { 
        e.preventDefault();  
        menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft");
        }     
};
this.oncontextmenu =e=> { e.button && !e.ctrlKey && e.preventDefault() };
*/

this.onclick = e => e.button || GrabScroll.toggle();
this.oncontextmenu = e => e.detail == 2 && !menuPopup.hidePopup()
     || e.ctrlKey || !!menuPopup.openPopup(this, "after_start");

mokujin пишет

хочу повесить это на вкладку(активную) чтоб клик (LeftMouseClick) по активной(выбранной) вкладке делал тоже самое что и кнопка

Сначала пишем простой набросок,
затем смотрим что может пойти не так.

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

Выделить код

Код:

((trg, sortFunc, flag) => {
    addEventListener("mousedown", e => flag = e.target != gBrowser.selectedTab, true, trg);
    addEventListener("click", e => {
        if (
            flag || e.button
            || e.ctrlKey || e.shiftKey || e.altKey
            || e.detail != 1 || ~~"что-то ещё"
        )
            return;

        var tabs = [...(gBrowser.visibleTabs || gBrowser.tabs)];
        var recentlyUsedTabs = tabs.sort(sortFunc);
        var tab = tabs[recentlyUsedTabs.indexOf(e.target) + 1];
        if (tab) gBrowser.selectedTab = tab;

    }, false, trg);
})(gBrowser.tabContainer, (tab1, tab2) => tab2.lastAccessed - tab1.lastAccessed);

Отредактировано Dumby (20-01-2018 05:08:50)

Отсутствует

 

№196520-01-2018 11:20:05

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

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

Dumby пишет

Двойное нажатие ПКМ не вызывает меню СВ потому,
что в коде кнопки на это есть прямой запрет. А вот так, например, вызывает.

Нет, раньше на старых версиях Firefox двойное ПКМ вызывала СВ меню даже если на одиночный ПКМ уже висело меню настроек кнопки. А за код спасибо :)

Отсутствует

 

№196620-01-2018 12:45:03

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

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

Dumby

Да, действительно, пункты множатся.
Попытаюсь избежать, но не уверен.

теперь не множатся. Все отлично.

Отсутствует

 

№196720-01-2018 14:24:19

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

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

В главном меню [firefox] есть пункт Изменить..., который вызывает открытие вкладки Настройка FireFox (аналогично нажатию ПКМ по панели меню -> Изменить). Можно ли эту команду вынести в виде кнопки на панель меню [firefox], или создать кнопку для Custom Buttons такого же назначения? Частенько приходиться настраивать внешний вид [firefox] (удалять/добавлять/перемещать кнопки), и было бы удобно держать эту команду поближе. Помогите, пожалуйста. Прошу прощение за примитивную просьбу :blush: Спасибо

Отсутствует

 

№196820-01-2018 14:57:31

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

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

Viatcheslav

Выделить код

Код:

/*CODE*/

gCustomizeMode.enter();

Отредактировано unter_officer (20-01-2018 14:58:44)


«The Truth Is Out There»

Отсутствует

 

№196920-01-2018 17:07:54

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

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

Dumby Попробовал добавить в твою кнопку Консоль браузера открытие в bottom панели, посмотри пожалуйста, не испортил ли я твой код. По твоему методу добавления панели, у меня как то не  вышло.

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

Выделить код

Код:

/*Initialization Code*/
({
    title: "Консоль браузера",
    icon: "chrome://devtools/skin/images/tool-webconsole.svg",
    url: "chrome://devtools/content/webconsole/webconsole.xul",
    init() {
        var trg = document.getElementById("browser");
        trg && addEventListener("DOMContentLoaded", this, false, trg);
        var attrs = {
            sidebartitle: this.title, sidebarurl: this.url,
            type: "checkbox", group: "sidebar", checked:
                SidebarUI.isOpen && SidebarUI.browser.getAttribute("src") == this.url
        };
        var broadcaster = this.element("broadcaster", Object.assign({
            id: "viewBrowserConsoleSidebar"
        }, attrs), document.getElementById("mainBroadcasterSet"));

        Object.assign(attrs, {
            autoCheck: "false", label: this.title, observes: broadcaster.id,
            oncommand: `SidebarUI.toggle("${broadcaster.id}");`
        });
        var btn = this.element("toolbarbutton", Object.assign({
            id: "sidebar-switcher-browserconsole",
            class: "subviewbutton subviewbutton-iconic"
        }, attrs));
        this.element("observes", {element: broadcaster.id, attribute: "checked"}, btn);
        document.querySelector("#sidebarMenu-popup > toolbarseparator").before(btn);

        var menuitem = this.element("menuitem", Object.assign({
            id: "menu_browserConsoleSidebar"
        }, attrs), document.getElementById("viewSidebarMenu"));

        var css = `\
            #${btn.id} > .toolbarbutton-icon,
            #sidebar-box[sidebarcommand="${broadcaster.id}"] > #sidebar-header > #sidebar-switcher-target > #sidebar-icon {
                list-style-image: url(${this.icon});
                -moz-context-properties: fill;
                fill: currentColor;
                opacity: 0.8;
            }
            #TabsToolbar[brighttext] .tabbrowser-tab:not([visuallyselected=true]) .tab-icon-image[src="${this.icon}"] {
                filter: url("chrome://devtools/skin/images/filters.svg#icon-normal-dark");
            }`;
        var dwu = QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
        var str = "data:text/css," + encodeURIComponent(css), type = dwu.AGENT_SHEET;
        dwu.loadSheetUsingURIString(str, type);

        addDestructor(() => {
            for(var node of [broadcaster, btn, menuitem]) node.remove();
            dwu.removeSheetUsingURIString(str, type);
        });
        
        
        
  function $(aId) {
    return document.getElementById(aId);
  }
  gCBBrowserConsole= this;
  this.panel = false;
  this.togglePanel = function() {
  this.panel = !this.panel;
  $("BrowserConsole-splitter").hidden = !this.panel;
  $("BrowserConsole-panel").hidden = !this.panel;
  $("BrowserConsole-iframe").setAttribute("src", this.panel ? this.url : "");
  }
  
  function makeXML(aXMLString) {
  return (new DOMParser).parseFromString(aXMLString, "application/xml")
                        .documentElement;
  }

  function $xml(aNode, aId, aXML) {
  var node = $(aId);
  node && node.parentNode.removeChild(node);
  aNode && aNode.appendChild(makeXML(aXML))
  } 
        
     $xml($("appcontent"),
      "BrowserConsole-splitter",
     '<splitter xmlns="' + xulns + '" id="BrowserConsole-splitter"'
   + ' orient="vertical" hidden="true">'
   + '<grippy oncommand="this.parentNode.nextSibling.collapsed ='
   + ' !this.parentNode.nextSibling.collapsed;"/></splitter>');

     $xml($("appcontent"),
     "BrowserConsole-panel",
     '<vbox xmlns="' + xulns + '" id="BrowserConsole-panel"'
   + ' height="300" hidden="true">'
   + '<toolbox><toolbar align="center">'
   + '<label value="Консоль браузера" flex="1" crop="end"/>'
   + '<toolbarbutton class="tabs-closebutton"'
   + ' image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACt0lEQVQ4jaWSzUtUYRTGn/fcGZ25H+m9Iyne8fpFq4lGCsFFIW21NiKKuHIn4qpazDraabnMTVEh+Af0B0QIIohBowhlkM1MMTre+VLngzv3PW1SKWvVWR0eOL/zcM4jmBn/U4G/iTuzsyK7unoLUl4HABDtdExNbV1fXr60Tfzp4J1h3Dd1/ak1OHhN7+kBiHCaTsPd2NgrlMsP7x4fv/0nYE3XH9ix2GLbzIwQmvYbmCsVHL16xd+3tx/dOTl5dqbTWfPeMIavOs6COT0tmBmyWAS1toJaWyGLRbCUMKemxFXHWXhvGMOXACrw2BwdJYUITX190MbG4O/twf/yBdrYGJr6+6EQwbx3j1QhHv8GWDfNNjUavR3u6ACyWQRjMQRsG+rkJNSJCQRsG8FYDDKbRbi9Harj3F43zbYLB41Gr2bbRIUCFACnS0vwMhkEbBsB24aXyaCcSEDJZiFyOWidnYRGo/f8jQpQp9NTiFwOACCJACEuDsgMeXAAuC7YMECeBwWonwOaLOtT/evXMhTlSs00oS8vI2jbqGcyADOau7pgvHiB8vg4tMND1F233GRZn87pzIwtXX9eiEb5uLubC2/ecC2V4qOhIT4aGuJqKsX516/52HG4EI3ylq4/P5s7z8FHy2qXnvehOxTqDBGhFongiusCAMqWhVA+j5qU+Far/RDB4M2BfP7gUpCSLS03qr7/NiyEExEC6i+9AsBlRpU5FVaU+zdKpeSlHCSTSazOzW0XNW2gCjzZ9/3Pu77Pu77P+77/uQo8cTVt4OXMzM7a2tpFlBOJhFhZWWkulUphz/NUKWWYmUPM3GwCKgBRAKoA6kRUI6JKIBCo6rpeGRkZqQlmRjqdxuLiIm1ublIul6NKpaI0Gg3yfV8AABFxMBiUoVBIRiIRPx6Py/n5eRmPx/ETBvM/dPD/rBwAAAAASUVORK5CYII="'
   + ' oncommand="gCBBrowserConsole.togglePanel();"/>'
   + '</toolbar></toolbox>'
   + '<iframe id="BrowserConsole-iframe" src="" flex="1"/>'
   + '</vbox>');
        
        
  
       
        
        self.onclick = e => {
           //if (e.button == 2) return;
           //if (!e.button) return SidebarUI.toggle(broadcaster.id);
            if (e.button == 0) return  SidebarUI.toggle(broadcaster.id);
            
            if (e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ){
               e.preventDefault();
               this.togglePanel();
                 }     
            var st = gBrowser.selectedTab, tab;
           // if (!e.ctrlKey) tab = gBrowser.visibleTabs.find(
            if (e.button == 1){ tab = gBrowser.visibleTabs.find(
                tab => tab.linkedBrowser.currentURI.spec == this.url
            )
            
            if (tab == st) return;
            if (!tab) tab = gBrowser.addTab(this.url);
            gBrowser.moveTabTo(tab, st._tPos + 1);
            gBrowser.selectedTab = tab;}
        }
             
        if (gBrowser.currentURI.spec == this.url) {
            var doc = gBrowser.selectedBrowser.contentDocument;
            if (!doc.querySelector("link")) this.handleEvent({target: doc});
        }
    },
    
    handleEvent({target: doc}) {
        if (!doc || Cu.isCrossProcessWrapper(doc)) return;
        var win = doc.defaultView, url = doc.documentURI;
        var inTab = !String(win).includes("ChromeWindow");
        if (url == this.url) {
            if (inTab) {
                var link = doc.createElementNS(xhtmlns, "link");
                link.setAttribute("rel", "shortcut icon");
                link.setAttribute("href", this.icon);
                doc.documentElement.firstChild.before(link);
            }
            this.loader.Services.ww.wins.push(win);
            new this.loader.HUD_SERVICE().toggleBrowserConsole().then(bc => {
                if (!inTab) return;

                var dummy = {close() {}};
                var parent = this.inIDOMUtils.getParentForNode(doc, true);
                if (parent && parent.id == "web-panels-browser") {
                    SidebarUI._title.value = this.title;
                    SidebarUI._icon.src = this.icon;
                    dummy.close = () => SidebarUI._icon.removeAttribute("src");
                }
                win.onbeforeunload = () => {bc.chromeWindow = dummy;}
            }, Cu.reportError);
        } else if (
            inTab && url == "chrome://devtools/content/shared/widgets/VariablesView.xul"
        ) {
            var iframe = win.frameElement;
            if (!iframe || iframe.ownerDocument.documentURI != this.url) return;

            var listener = Services.els.getListenerInfoFor(iframe)
                .find(obj => obj.type == "load").listenerObject;
            iframe.removeEventListener("load", listener, true);
            win.addEventListener("load", () => listener({target: doc}), {once: true});
        }
    },
    get loader() {
        delete this.loader;
        var id = _id + "-browser-console";
        var url = "resource://devtools/shared/Loader.jsm?" + id;
        var loader = {exports: {}}, nsvo = Cu.import(url, loader);
        addDestructor(reason => reason[5] == "e" && Cu.unload(url));

        if (id in nsvo) return this.loader = nsvo[id];

        Services.scriptloader.loadSubScript("resource://devtools/client/webconsole/hudservice.js", loader);
        var e = new CustomEvent("DOMContentLoaded", {bubbles: false}), ww = loader.Services.ww;
        loader.Services.ww = Cu.getGlobalForObject(nsvo).Object.create(ww, {
            wins: {value: []},
            openWindow: {value: function() {
                var win = this.wins.shift();
                setTimeout(() => win.dispatchEvent(e), 0);
                return win;
            }}
        });
        Services.obs.removeObserver(loader.gDevToolsBrowser, "browser-delayed-startup-finished");
        var func = nsvo.require("devtools/client/framework/browser-menus").removeMenus;
        for(var win of CustomizableUI.windows) func(win.document);
        return this.loader = nsvo[id] = loader;
    },
    element(name, attrs, parent) {
        var node = document.createElement(name);
        for(var attr in attrs) node.setAttribute(attr, attrs[attr]);
        if (parent) parent.appendChild(node);
        return node;
    },
    get inIDOMUtils() {
        delete this.inIDOMUtils;
        return this.inIDOMUtils = "inIDOMUtils" in Ci
            ? Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils)
            : InspectorUtils;
    }
    
}).init();
this.oncontextmenu =e=> { e.button && !e.ctrlKey && e.preventDefault() }; 
// Подсказка у кнопки.............................................................................
this.tooltipText = "Консоль браузера" +"\n"+
                   "ЛКМ: В боковой панели" +"\n"+
                   "СКМ: В новой вкладке" +"\n"+
                   "ПКМ: В bottom панели" +"\n"+
                   "Ctrl+ПКМ: Стандартное меню ";

Отсутствует

 

№197020-01-2018 17:27:47

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 58.0

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

Button Proxy.pac пишет

var path1 = 'file:///D:/Proxy.pac' var path2 = 'file:///C:/Proxy.pac'; var s = 'network.proxy.autoconfig_url';

Шикарная кнопка...Черт бы побрал эту 58...Не работает...
Это кнопка Bunda1 - менять путь к проси -proxy.pac../ В 57-Ок!,в Seamonkey- кое-как, в 58- никак....
Можно как-то скреативить для 58? Или гиблое дело?
network.proxy.autoconfig_url строка  file:///D:/Proxy.pac
                                                            file:///C:/Proxy.pac

Отредактировано drage2 (24-01-2018 14:34:27)

Отсутствует

 

№197125-01-2018 20:01:54

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

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

drage2 пишет

Это кнопка Bunda1 - менять путь к проси -proxy.pac../ В 57-Ок!,в Seamonkey- кое-как, в 58- никак....
Можно как-то скреативить для 58? Или гиблое дело?
network.proxy.autoconfig_url строка  file:///D:/Proxy.pac
                                                            file:///C:/Proxy.pac

:/

Выделить код

Код:

var path1 = 'file:///D:/Proxy.pac'
var path2 = 'file:///C:/йцукен.pac';
var s = 'network.proxy.autoconfig_url';

this._handleClick =()=> {
   var path = getPath() == path1 ? path2 : path1; 
   cbu.setPrefs(s, convertFromUnicode("UTF-8", path));
};

function convertFromUnicode(charset, str) {
   var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter);
   converter.charset = charset;
   str = converter.ConvertFromUnicode(str);
   return str + converter.Finish();
};

function getPath() {     
   try { return gPrefService.getStringPref(s, "") } 
   catch(e) { return path1 };
};

function toggleImage() { 
   var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon");
   icon.src = getPath() == path1  
   ? self.image 
   : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAD1BMVEUfact50/fF+v/M//////8mt18DAAAABXRSTlP/////APu2DlMAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAgdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1Yu5EqJAAAADhJREFUeJxjcHFgAAIXFwYXB2NjYwYWEMNQUJCZAcYwYIEwGBigDEFhDIYQ+QygpUZKIAbIGQwsANX+EGaBLn8yAAAAAElFTkSuQmCC';
};
toggleImage();
gPrefService.addObserver(s, toggleImage, false);
addDestructor(()=> gPrefService.removeObserver(s, toggleImage));

Отсутствует

 

№197226-01-2018 00:20:09

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

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

Скажите пожалуйста, кто может подправить

Выделить код

Код:

// Получить выделенный текст из страницы или 'false' ..............
function getSelect() {
  var el = document.commandDispatcher.focusedElement;
  try { return el.value.substring(el.selectionStart, el.selectionEnd) } catch(e) {};
  var sel = document.commandDispatcher.focusedWindow.getSelection();
return (sel == '') ? false : sel.toString().replace(/^\s+|\s+$/g,"").replace(/\u000A/g, "\u000D\u000A").replace(/\u000D\u000D\u000A/g, "\u000D\u000A");
};

почему то возвращает все время 'false'

Отредактировано Andrey_Krropotkin (26-01-2018 09:19:24)

Отсутствует

 

№197326-01-2018 00:27:58

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 499
UA: Firefox 52.0

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

Andrey_Krropotkin пишет

почему то возвращает все время 'false'

просто со страницы, то так

Выделить код

Код:

let text = document.commandDispatcher.focusedWindow.getSelection().toString();

Добавлено 26-01-2018 00:38:51
А вообще, есть готовая функции, вродеб за авторством bunda1 ok.gif  , навроде универсальной:

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

Выделить код

Код:

// получаем выделенный текст
function getSelect() {

 var sel = document.commandDispatcher.focusedWindow.getSelection(); // из страницы
  if ( sel.isCollapsed ) {    
     var el = document.commandDispatcher.focusedElement;    // из текстового поля
     if ( el && el.textLength )
          sel = el.value.substring(el.selectionStart, el.selectionEnd);  
     }
  if ( sel.anchorNode && sel.anchorNode.parentNode.tagName == 'PRE' ) {  // из 'PRE'
     var sel = sel.focusNode.data.substring(sel.anchorOffset, sel.focusOffset); 
     }          
  if ( sel == '') {                                   // если выделенного текста нет
     return;
     }
return sel;
//  if (sel) gClipboard.write(sel);

  };

alert(getSelect());

Отредактировано mokujin (26-01-2018 00:38:51)


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№197426-01-2018 08:59:54

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

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

mokujin на 57 работало, а на 58 не работает и этот вариант

Отсутствует

 

№197526-01-2018 12:18:55

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 58.0

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

bunda1
Круто....Не постоје речи! Заработало!
Шутку с "var path2 = 'file:///C:/йцукен.pac';" - заценил !
Хвала, брате! Еще бы " увеличить изображение" в мультипроцессе и все .... А, так пришлось кнопку лепить "browser.tabs.remote.autostart" , и перезапуск нужен, что ни есть гуд!

Отредактировано drage2 (26-01-2018 12:26:34)

Отсутствует

 

Board footer

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