Есть ли какой способ отследить какие EventListener-ы повешены на элемент?
Иногда. Некоторые. nsIEventListenerService.getListenerInfoFor.
В файрбаге это можно сделать?
Читал, что есть какой-то плагин для него евентбаг.
Может есть другие способы?
В Инспектор добавлено отображение, к каким элементам присоединены слушатели событий
Отсутствует
bunda1
Возвращаясь к просьбе по поводу кнопки
№7431[/url]]
voqabuhe пишет:
Вот бы ещё её действие распространить на боковую панель закладок и тогда вообще цены бы ей не было. Это возможно сделать, или сильно сложно?
Вроде не сложно, попробую.
Очень интересует, что с доработкой кнопки совсем глухо, или ещё какие-то надежды остаются? Если возникли какие-то непредвиденные трудности, то может обратиться к помощи "зала"? А то актуальность просьбы опять очень возросла, после очередного частичного отвала Add Bookmark Here ² на .
Отсутствует
Если возникли какие-то непредвиденные трудности, то может обратиться к помощи "зала"?
Как получить 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)
Отсутствует
bunda1
Отсутствует
bunda1
Вот спасибо!
Отсутствует
Если возникли какие-то непредвиденные трудности, то может обратиться к помощи "зала"?
Как получить контекстное меню закладки из боковой панели по клику на закладке из target если var target = e.originalTarget;
Я намутил вот такое:
document.getElementById("sidebar").contentWindow.document.getElementById("placesContext")
но может есть код покороче?
Отсутствует
bunda1
По идее,
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
bunda1
По идее,
спасибо, это работает
Отсутствует
bunda1
Вместо
лучше
Тогда в консоль нормальная ошибка попадет и будет видно, откуда она.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
Спасибо
Вопрос, как различить клик на закладку в боковом панели и вкладке с адресом chrome://browser/content/bookmarks/bookmarksPanel.xul у target в обоих случаях одинаковые атрибуты и свойства. Может есть способ узнать где находится фокус.
Отсутствует
bunda1
Можно проверить на
target.ownerDocument.defaultView instanceof Components.interfaces.nsIDOMChromeWindow
У окна во вкладке будет false.
И можно проверить target.ownerDocument.defaultView.top: во вкладке будет content.top === content.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
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)
Отсутствует
Управление закладками, от 22.10.2014. ................................
Ну просто праздник какой-то. На первый взгляд всё вроде замечательно .Огромное спасибо тебе. Только вот желательно чтобы при СКМ не закрывалось бы меню закладок. И как пожелание, хотелось бы ещё получить, не сочти за наглость, добавление закладок по двойному клику на папку закладок в боковой панели. Когда папка существующая с закладками, теперь тут проблем нет. А вот когда создаешь новую, тогда по-прежнему приходится перетягивать туда вкладку, вот тут бы очень пригодился двойной клик, как для панели закладок №7188
Отсутствует
А есть какая-нибудь кнопка, что вместо окна закладок, открывала вкладку (chrome://browser/content/places/places.xul) при нажатии Show All Bookmarks?
Открывать библиотеку в вкладке и последнюю активную папку библиотеки
Отсутствует
Как передать регулярное выражение вторым аргументом функции?
Вот есть несколько функций типа
где второй параметр - разные наборы цифр. Я хочу чтобы все эти функции сработали, какие бы цифры там ни были.
Отсутствует
Вот попробуй: Управление закладками
Огромное спасибо. Практически всё очень хорошо, а в боковой панели так просто идеально. Не нравится только, что когда добавляешь закладку двойным ПКМ во вложенную папку на панели закладок, меню сразу закрывается. Или как сделать?
А может вообще убрать автозакрытие меню?
Пробовал удалять вот этот блок
// автоматически закрыть все меню закладок при уходе курсора .... 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) );
Отсутствует
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)про функции непонятно что хочешь
Нет, я хотел не это. На странице есть несколько элементов. На каждом есть обработчик онклик и на первом элементе этот обработчик вызывает функцию
на втором
на третьем
и т. д. Цифры разные.
Я хочу кнопкой запустить код, который бы сделал то, как если бы я нажал на все эти элементы с обработчиками. Независимо какие цифры идут вторым аргументом.
Отсутствует
voqabuhe
Пробовал удалять вот этот блок
Не нужно, в начале кода есть:
const menuAutoClose = false; // автоматически закрыть меню закладок при уходе курсора
Практически всё очень хорошо, а в боковой панели так просто идеально. Не нравится только, что когда добавляешь закладку двойным ПКМ во вложенную папку на панели закладок, меню сразу закрывается. Или как сделать?
ПКМ!! Не понял! Для добавление закладок во все папки используй двойным ЛКМ. Может у тебя для добавления закладок ещё какой код установлен?
Отредактировано bunda1 (25-10-2014 12:38:00)
Отсутствует