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

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

№810120-10-2014 16:11:44

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

Re: Custom Buttons

toxa пишет

Есть ли какой способ отследить какие EventListener-ы повешены на элемент?

Иногда. Некоторые. nsIEventListenerService.getListenerInfoFor.

В файрбаге это можно сделать?
Читал, что есть какой-то плагин для него евентбаг.
Может есть другие способы?

Вышел Firefox 33

В Инспектор добавлено отображение, к каким элементам присоединены слушатели событий

Отсутствует

 

№810220-10-2014 17:41:32

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

Re: Custom Buttons

bunda1
Возвращаясь к просьбе по поводу кнопки

bunda1 [url=https://forum.mozilla-russia.org/viewtopic.php?pid=621367#p621367 пишет

№7431[/url]]   

voqabuhe пишет:

    Вот бы ещё её действие распространить на боковую панель закладок и тогда вообще цены бы ей не было.  Это возможно сделать, или сильно сложно?

Вроде не сложно, попробую.

Очень интересует, что с доработкой кнопки совсем глухо, или ещё какие-то надежды остаются? :) Если возникли какие-то непредвиденные трудности, то может обратиться к помощи "зала"? А то актуальность просьбы опять очень возросла, после очередного частичного отвала Add Bookmark Here ² на [nightly].

Отсутствует

 

№810321-10-2014 16:51:14

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

Re: Custom Buttons

voqabuhe пишет

Если возникли какие-то непредвиденные трудности, то может обратиться к помощи "зала"?

Как получить id папки закладок из боковой панели если известен id закладки из той папки или по клику на закладке из target если var target = e.originalTarget; или из             

Выделить код

Код:

var tree = target.parentNode;
var box = tree.treeBoxObject;
var row = box.getRowAt(e.clientX, e.clientY); 
var node = tree.view.nodeForTreeIndex(row);

:/

Отредактировано bunda1 (21-10-2014 17:05:12)

Отсутствует

 

№810421-10-2014 17:12:08

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

Re: Custom Buttons

bunda1

Выделить код

Код:

var parentId = node.parent.itemId;

Отсутствует

 

№810521-10-2014 17:18:06

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

Re: Custom Buttons

Dumby пишет

bunda1

Выделить код

Код:

var parentId = node.parent.itemId;

Вот спасибо!

Отсутствует

 

№810621-10-2014 19:30:35

toxa
Участник
 
Группа: Members
Зарегистрирован: 11-04-2012
Сообщений: 261
UA: Firefox 25.0

Re: Custom Buttons

Dumby спасибо за ссылки!
Сделал себе жест.

Отсутствует

 

№810721-10-2014 20:34:42

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

Re: Custom Buttons

voqabuhe пишет

Если возникли какие-то непредвиденные трудности, то может обратиться к помощи "зала"?

Как получить контекстное меню закладки из боковой панели по клику на закладке из target если var target = e.originalTarget;
Я намутил вот такое:

Выделить код

Код:

document.getElementById("sidebar").contentWindow.document.getElementById("placesContext")

но может есть код покороче?

Отсутствует

 

№810821-10-2014 20:50:26

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 33.0

Re: Custom Buttons

bunda1
По идее,

Выделить код

Код:

target.ownerDocument.getElementById("placesContext")

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№810921-10-2014 21:10:39

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

Re: Custom Buttons

Infocatcher пишет

bunda1
По идее,

Выделить код

Код:

target.ownerDocument.getElementById("placesContext")

спасибо, это работает :)

Отсутствует

 

№811022-10-2014 17:34:16

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 33.0

Re: Custom Buttons

bunda1
Вместо

Выделить код

Код:

catch(e) { LOG(e) }

лучше

Выделить код

Код:

catch(e) { Components.utils.reportError(e); }

Тогда в консоль нормальная ошибка попадет и будет видно, откуда она.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№811122-10-2014 18:28:50

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

Re: Custom Buttons

Infocatcher
Спасибо :)
Вопрос, как различить клик на закладку в боковом панели и вкладке с адресом chrome://browser/content/bookmarks/bookmarksPanel.xul у target в обоих случаях одинаковые атрибуты и свойства. Может есть способ узнать где находится фокус.

Отсутствует

 

№811222-10-2014 19:59:24

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 33.0

Re: Custom Buttons

bunda1
Можно проверить на

Выделить код

Код:

target.ownerDocument.defaultView instanceof Components.interfaces.nsIDOMChromeWindow

У окна во вкладке будет false.

И можно проверить target.ownerDocument.defaultView.top: во вкладке будет content.top === content.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№811322-10-2014 20:37:54

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

Re: Custom Buttons

Спасибо :)

Отсутствует

 

№811422-10-2014 22:45:48

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

Re: Custom Buttons

voqabuhe

Выделить код

Код:

// Управление закладками, от 24.10.2014. ................................ 
(function func() {
   // страницы где левый длинный клик открывает закладку в текущей странице
   var current = ["about:newtab", "about:blank", "chrome://browser/content/bookmarks/bookmarksPanel.xul"]; 
   
   const background = true;      // открывать закладку в фоновой вкладке
   const nextToCurrent = false;  // открывать закладку рядом с текущей вкладкой
   const menuAutoClose = false;  // автоматически закрыть меню закладок при уходе курсора

   try {      
   function handleClick(e) { 
      var target = e.originalTarget;
      var sidebar = target.ownerDocument.defaultView.top !== content 
                    && target.id == 'bookmarks-view-children';

      if ( !sidebar && !target._placesNode ) return; // стоп, если не закладка, папка, разделитель 

      // получить закладку, адрес, папку и id закладки, другие переменные
      if ( sidebar ) {
           var tree = target.parentNode;
           var box = tree.treeBoxObject;
           var row = box.getRowAt(e.clientX, e.clientY); 
           var node = tree.view.nodeForTreeIndex(row);            
           }
      var node = sidebar ? node : target._placesNode,
      id = node.itemId, uri = node.uri, button = e.button, type = e.type,            
      isFolder = PlacesUtils.nodeIsContainer(node), isURI = PlacesUtils.nodeIsURI(node); 

      // двойной клик добавляет закладку или удаляет закладку, разделитель ....
      if ( button !== 1 && type == 'mouseup' ) {                 
           if ( button == 0 && func.flag == true && isFolder ) {
                addBookmark(node, false);
                node.containerOpen = !node.containerOpen;               
                }
           
           if ( button == 2 && func.flag == true && !isFolder ) {                     
                setTimeout(function() { 
                   target.ownerDocument.getElementById("placesContext").hidePopup()
                   try { PlacesUtils.bookmarks.removeItem(id) } catch(e) {};                   
                }, 0); 
                }
                                
           func.flag = true;
           setTimeout(function() func.flag = false, 400 );
           }
           
      if ( isFolder ) return;                                // стоп, если папка закладок
      if ( button == 0 ) window.clearTimeout( func.timer );  // сбросить таймер длинного клика           

      // блокировать действие по умолчанию для клика и отжатия ....
      if ( button == 0 && /click|mouseup/.test(type) ) { 
           e.preventDefault(); e.stopPropagation();
           }
      
      // левый длинный клик добавляет текущую вкладку в закладки под нажатой закладкой ....
      if ( button == 0 && type == 'mousedown' ) {                      
           func.loadBook = true;       
           func.timer = setTimeout(function() {
               func.loadBook = false;
               addBookmark(node.parent, id);
           }, 400 );  
           }
           
      // левый клик открывает закладку в новой или текущей вкладке ....      
      if ( button == 0 && type == 'mouseup' && func.loadBook && isURI ) {
           ( uri.startsWith("javascript") || current.indexOf(content.location.href) !== -1 || e.ctrlKey ) 
           ? gBrowser.loadURI( uri ) 
           : gBrowser.loadOneTab( uri, {relatedToCurrent: nextToCurrent, inBackground: background,
                                        referrerURI: null } );
           }       
    
      // средний клик открывает закладку в текущей вкладке ....
      if ( button == 1 && type == 'mouseup' && isURI ) {             
           gBrowser.loadURI( uri );
           }           

       // автоматически закрыть все меню закладок при уходе курсора .... 
       var menu = target.parentNode;
       if ( !menuAutoClose || !menu || menu.localName !== 'menupopup' || button == 2 ) return;
       menu.onmouseover = function() func.mo = false;
       menu.onmouseleave = function() { 
          func.mo = true; setTimeout(function(mp) { if (func.mo) mp.hidePopup(), mp.onmouseleave = ""; }, 450, this) };
   };
   } catch(e) { Cu.reportError(e) };  
   ["click", "dragstart", "mouseup", "mousedown"]
   .forEach(function(type) addEventListener(type, handleClick, true) );
   
   
   // добавить страницу в закладки в указанной папке ....   
   function addBookmark(folder, id) {
      var title = gBrowser.mCurrentTab.label;
      var index = id ? PlacesUtils.bookmarks.getItemIndex(id) + 1 : 0;
      PlacesUtils.bookmarks.insertBookmark(PlacesUtils.getConcreteItemId(folder), gBrowser.currentURI, index, title);
      
      // всплывающая подсказка
      if ( id ) return;
      var str = gBrowser.mCurrentTab.label.slice(0, 100);
      var icon = gBrowser.mCurrentTab.image || "chrome://global/skin/icons/information-16.png";
      Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService).
      showAlertNotification(icon, "Добавил в папку " + (folder.title || "(без заголовка)") + ":", str);
   };    
})();

Отредактировано bunda1 (25-10-2014 00:52:37)

Отсутствует

 

№811522-10-2014 23:21:21

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

Re: Custom Buttons

bunda1 пишет

Управление закладками, от 22.10.2014. ................................

yahoo.gif Ну просто праздник какой-то. На первый взгляд всё вроде замечательно .Огромное спасибо тебе. drinks.gif Только вот  желательно чтобы при СКМ не закрывалось бы меню закладок.  И  как пожелание, хотелось бы ещё получить, не сочти за наглость, добавление закладок по двойному клику на папку закладок в боковой панели. Когда папка существующая с закладками, теперь тут проблем нет. А вот когда создаешь новую, тогда по-прежнему  приходится перетягивать туда вкладку, вот тут бы очень пригодился двойной клик, как для панели закладок №7188

Отсутствует

 

№811622-10-2014 23:37:43

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

Re: Custom Buttons

Только вот  желательно чтобы при СКМ не закрывалось бы меню закладок.

А может вообще убрать автозакрытие меню?

Отсутствует

 

№811723-10-2014 00:03:42

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

Re: Custom Buttons

bunda1 пишет

А может вообще убрать автозакрытие меню?

Давай попробуем.

Отсутствует

 

№811823-10-2014 17:57:59

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

Re: Custom Buttons

А есть какая-нибудь кнопка, что вместо окна закладок, открывала вкладку (chrome://browser/content/places/places.xul) при нажатии Show All Bookmarks?
ZvPGvbY.png

Отсутствует

 

№811923-10-2014 18:28:06

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

Re: Custom Buttons

Northtech пишет

А есть какая-нибудь кнопка, что вместо окна закладок, открывала вкладку (chrome://browser/content/places/places.xul) при нажатии Show All Bookmarks?

Открывать библиотеку в вкладке и последнюю активную папку библиотеки

Отсутствует

 

№812023-10-2014 20:18:40

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

Re: Custom Buttons

bunda1
Спасибо.

Отсутствует

 

№812124-10-2014 19:03:02

Ki_rrrilll
Участник
 
Группа: Members
Зарегистрирован: 22-11-2013
Сообщений: 127

Re: Custom Buttons

Как передать регулярное выражение вторым аргументом функции?
Вот есть несколько функций типа

Выделить код

Код:

function myFunc(this, 23546982) {

   }

где второй параметр - разные наборы цифр. Я хочу чтобы все эти функции сработали, какие бы цифры там ни были.

Отсутствует

 

№812225-10-2014 00:53:33

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

Re: Custom Buttons

voqabuhe
Вот попробуй: Управление закладками

Отсутствует

 

№812325-10-2014 11:53:26

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

Re: Custom Buttons

bunda1 пишет

Вот попробуй: Управление закладками

Огромное спасибо. Практически всё очень хорошо, а в боковой панели так просто идеально. Не нравится только, что когда добавляешь закладку двойным ПКМ во вложенную папку на панели закладок, меню сразу закрывается. Или как сделать?

bunda1 пишет

А может вообще убрать автозакрытие меню?

Пробовал удалять вот этот блок

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

Выделить код

Код:

// автоматически закрыть все меню закладок при уходе курсора .... 
       var menu = target.parentNode;
       if ( !menuAutoClose || !menu || menu.localName !== 'menupopup' || button == 2 ) return;
       menu.onmouseover = function() func.mo = false;
       menu.onmouseleave = function() { 
          func.mo = true; setTimeout(function(mp) { if (func.mo) mp.hidePopup(), mp.onmouseleave = ""; }, 450, this) };
   };
   } catch(e) { Cu.reportError(e) };  
   ["click", "dragstart", "mouseup", "mousedown"]
   .forEach(function(type) addEventListener(type, handleClick, true) );


Но тогда кнопка становится не активной.

Отсутствует

 

№812425-10-2014 11:54:30

Ki_rrrilll
Участник
 
Группа: Members
Зарегистрирован: 22-11-2013
Сообщений: 127
UA: unknown 0.0

Re: Custom Buttons

okkamas_knife пишет
Ki_rrrilll пишет

Как передать регулярное выражение вторым аргументом функции?

Выделить код

Код:

var test="aaaaabbbbbbbcccccccc";
var myreg = new RegExp( "a+", "g");
function zzz(text,reg){
var n1=text.replace(reg,"111");
alert(text+"\n"+n1);
}
zzz(test,myreg)

про функции непонятно что хочешь

Нет, я хотел не это. На странице есть несколько элементов. На каждом есть обработчик онклик и на первом элементе этот обработчик вызывает функцию

Выделить код

Код:

function ааа(this, 23546982) {   }

на втором

Выделить код

Код:

function ааа(this, 54105968){   }

на третьем

Выделить код

Код:

function ааа(this, 76653) {   }

и т. д. Цифры разные.
Я хочу кнопкой запустить код, который бы сделал то, как если бы я нажал на все эти элементы с обработчиками. Независимо какие цифры идут вторым аргументом.

Отсутствует

 

№812525-10-2014 12:24:49

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

Re: Custom Buttons

voqabuhe

Пробовал удалять вот этот блок

Не нужно, в начале кода есть:   

Выделить код

Код:

const menuAutoClose = false;  // автоматически закрыть меню закладок при уходе курсора

Практически всё очень хорошо, а в боковой панели так просто идеально. Не нравится только, что когда добавляешь закладку двойным ПКМ во вложенную папку на панели закладок, меню сразу закрывается. Или как сделать?

ПКМ!! Не понял! Для добавление закладок во все папки используй двойным ЛКМ. Может у тебя для добавления закладок ещё какой код установлен?

Отредактировано bunda1 (25-10-2014 12:38:00)

Отсутствует

 

Board footer

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