Rag
Indomito
Ввиду отсутствия FriGate, запустил в консоли то же самое для DOM Inspector (в слегка оптимизированном варианте):
AddonManager.getAddonsByTypes(["extension"], function(addons) { addons.forEach(function(addon) { if(addon.name=="DOM Inspector") addon.userDisabled = !addon.userDisabled; }) })
Всё молча отработало, состояние Инспектора переключилось в disabled. 52
Добавлено 13-07-2017 00:50:23
И из кнопки Custom Buttons этот код тоже работает.
Отредактировано yup (13-07-2017 00:50:23)
Отсутствует
yup Я пытался этой кнопкой запустить не запускаемое. Просто нужно было прописать не FriGate а FriGate - разблокировка сайтов
У меня эта кнопка запускает FlashGot именно в коде прописано FlashGot хотя правильное название FlashGot Mass Downloader Вот и FriGate я написал по аналогии с FlashGotом.В общем заработала кнопка.А почему такое с названиями для меня ну саавсем не понятно.
Спасибо за помощь вам и Indomito
Отредактировано Rag (13-07-2017 01:35:30)
Отсутствует
А почему такое с названиями для меня ну саавсем не понятно.
Не видя исходного кода, ничего сказать не могу. Но самое разумное: получить в консоль список "официальных" названий вот таким кодом:
AddonManager.getAddonsByTypes(["extension"], function(addons) { addons.forEach(function(addon) { LOG(addon.name) }) })
и пользоваться ими.
А ещё лучше - использовать не addon.name, а addon.id
Отредактировано yup (13-07-2017 02:00:33)
Отсутствует
yup
Вот теперь понятно. В консоли [Custom Buttons: id: custombuttons-button38@code, line: 3, name: ]
friGate - разблокировка сайтов.
[Custom Buttons: id: custombuttons-button7@code, line: 3, name: ]
FlashGot
Отсутствует
Возвращаясь к напечатанному...
Подскажите, почему в результате выполнения такого кода ничего не выводится:
var list = ""; AddonManager.getAddonsByTypes(["extension"], function(addons) { addons.forEach(function(addon) { list += addon.name + " : " + (addon.userDisabled ? "disabled" : "enabled") + "\n"; }); }); LOG(list);
Хотя при выполнении такой его модификации:
var list = ""; AddonManager.getAddonsByTypes(["extension"], function(addons) { addons.forEach(function(addon) { list += addon.name + " : " + (addon.userDisabled ? "disabled" : "enabled") + "\n"; LOG(list); }); });
накапливаемые результаты вполне себе выводятся.
Контекст же (область видимости имён) внутри накапливающей функции должен быть вложенным в тот, где переменная list объявлена...
Отредактировано yup (13-07-2017 13:05:09)
Отсутствует
yup пишет:
Контекст же (область видимости имён) внутри накапливающей функции должен быть вложенным в тот, где переменная list объявлена...
нифига.
var list = ""; AddonManager.getAddonsByTypes(["extension"], function(addons) { addons.forEach(function(addon) { list += addon.name + " : " + (addon.userDisabled ? "disabled" : "enabled") + "\n"; }); }); alert(list);// фига alert(list);// данные
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
нифига.
М-м-м. Ничего не понимаю. Запускаю этот код с alert() - на втором получаю искомый список. Что, переменная list в первом - не та же, что во втором?
Ладно, меняю alert на LOG и получаю в консоли два пустых вывода.
Закрадывается ощущение, что в getAddonsByTypes() function() вызывается асинхронно и к моменту вызова LOG()-ов посчитана ещё быть не может никак, а вот между вызовами alert() - вполне.
Добавлено 13-07-2017 14:24:50
Проверил - так и есть. Вариант:
var list = "123\n"; AddonManager.getAddonsByTypes(["extension"], function(addons) { list = ""; addons.forEach(function(addon) { list += addon.name + "\n"; LOG(list); }); }); LOG(list);
сначала печатает "123" и только потом - имена расширений.
Отредактировано yup (13-07-2017 14:30:24)
Отсутствует
yup пишет: асинхронно
именно
и видимость нипричём ибо
function инициализация_конкретной_кнопки(){
var list тут глобальная переменная(в пределах этой функции конечно) и соответственно гетаддонс её прекрасно видит как и любые другие функции внутри
}
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
Здравствуйте!
Если не сложно, сделайте пожалуйста кнопку: "Экспорт закладок в HTML-файл / Импорт закладок из HTML-файла".
«The Truth Is Out There»
Отсутствует
Нужна кнопка вроде Открыть видео в PotPlayerMini. Только взаимодействовать она должна не с плеером, а с плейлистом 1.m3u, расположенным в профиле. Левый клик в меню добавляет адрес медиафайла в конец плейлиста с новой строки.
Правый клик открывает плейлист в ассоциированной программе.
unter_officer
StRL+SHIFT+B > Import and Backup
Не подойдет?
Отредактировано ifln (17-07-2017 23:40:47)
Отсутствует
StRL+SHIFT+B > Import and Backup. Не подойдет?
Если бы подходило, то не просил бы сделать кнопочку.
Отредактировано unter_officer (18-07-2017 01:55:37)
«The Truth Is Out There»
Отсутствует
Подскажите пожалуйста что изменить в коде, чтобы меню закладок автоматически открывалось/закрывалось,а остальные меню работали как обычно?
/*Initialization Code*/ // ==UserScript== // @name AutoPopup.uc.js // @description Auto popup menulist/menupopup/Panelpopup // @compatibility Firefox 2.0+ // @author GOLF-AT // @version 2.0.0.20131119 (function() { var PopElt = null; var DropElt = null; var PopTimer = null; var HideTimer = null; var AlwaysPop = false; var nDelay = 400; function IsNewMenuBtn(elt) { try { return elt.id=='PanelUI-menu-button'; }catch(e) { return false; } } function AutoPopup() { PopTimer = null; if (DropElt) { if (DropElt.localName=='dropmarker' || IsNewMenuBtn(DropElt)) PopElt = DropElt; else { var v = null; try { v = DropElt.ownerDocument. getAnonymousNodes(DropElt); }catch(ex) {} if (v!=null && v.length!=0 && v[0]. localName=='menupopup') PopElt = v[0]; else PopElt = DropElt.childNodes[0]; } if (IsNewMenuBtn(PopElt)) { PanelUI.show(); return; } try { PopElt.showPopup(PopElt.parentNode, -1, -1, 'popup', 'bottomleft', 'topleft'); }catch(e) { PopElt = null; } } } function HidePopup() { try { if (PopElt.localName=='dropmarker') PopElt.parentNode.closePopup(); else if (IsNewMenuBtn(PopElt)) PanelUI.hide(); else PopElt.hidePopup(); }catch(e) {} HideTimer = null; DropElt = null; PopElt = null; } function MouseOver(e) { if (!AlwaysPop && !document.hasFocus()) return; if (IsButton(e.target)) { type = e.target.getAttribute('type'); if (type == 'menu-button') { if (e.originalTarget!=e.target) return; } /*else { if (type != 'menu') return; }*/ } if (HideTimer) { window.clearTimeout(HideTimer); HideTimer = null; } try { if ('PopupAutoComplete'==e.target.id. substr(0,17)) return; for(var elt=e.target; elt!=null; elt= elt.parentNode) { if (elt.localName=='popup' || elt. localName=='menupopup') return; } }catch(ex) {} if (IsNewMenuBtn(PopElt)) { if (e.target != PopElt) HidePopup(); } else if (PopElt != null) { if (DropElt!=null && e.target==DropElt) return; try { if (PopElt.localName != 'dropmarker' ) { for(var elt=e.target; elt!=null; elt=elt.parentNode) { if (elt == PopElt) return; } } }catch(ex) {} HidePopup(); } DropElt = e.target; PopTimer = setTimeout(AutoPopup, nDelay); } function MouseOut(e) { if (PopTimer) { window.clearTimeout(PopTimer); PopTimer = null; } if (!HideTimer && PopElt && !IsNewMenuBtn(e. target)) HideTimer = window.setTimeout(HidePopup, 500); } function IsButton(elt) { try { return elt.localName=='toolbarbutton' || elt .localName=='button'; }catch(e) { return false; } } function IsMenuButton(elt) { if (IsNewMenuBtn(elt)) return true; if (!IsButton(elt)) return false; for(var i=0; i<2; i++) { try { var nodes = i==0x01 ? elt.childNodes : elt. ownerDocument.getAnonymousNodes(elt); if (nodes!=null && nodes.length && nodes[0] .localName=='menupopup') return true; }catch(e) {} } return false; } function EnumElement(elt) { try { if (elt.localName == 'prefpane') { elt.addEventListener('paneload', function(e) { setTimeout(function() { EnumElement(e. target); }, 100); }, false); } else if(elt.id=='sidebar' && !elt.hasAttribute( 'AutoPopup')) { elt.setAttribute('AutoPopup', true) elt.addEventListener('SidebarFocused', function(e) { EnumElement(elt); }, false); } else if(elt.id == 'editBookmarkPanel') return; }catch(e) {} for(var i=0; i<2; i++) { var nodes = null; try { if (elt.localName == 'browser') { i = 1; nodes = elt.contentDocument.childNodes; } else nodes = i==0x01 ? elt.childNodes : elt. ownerDocument.getAnonymousNodes(elt); }catch(e) { nodes = null; } if (nodes == null) continue; for(var n=0; n<nodes.length; n++) { try { var node = nodes[n]; if ('PopupAutoComplete'==node.getAttribute( 'id').substr(0,17) || 'menupopup'==node .localName || node.localName=='popup') ; else if (node.localName != 'dropmarker') { if (node.localName=='menu' && 'menubar' ==node.parentNode.localName) ; else if(!IsMenuButton(node)) node = null; } else if(node.getAttribute('type')=='menu') { node = node.parentNode; if (!node.firstChild || node.firstChild. localName!='menupopup') continue; } if (node == null) { EnumElement(nodes[n]); continue; } if (node.hasAttribute('command')) continue; addEventListener('mouseout', MouseOut, false, node); addEventListener('mouseover',MouseOver, false, node); }catch(e) {} } } } setTimeout(function() { EnumElement(document); }, 1200); })();
Отсутствует
Подскажите пожалуйста что изменить в коде, чтобы меню закладок автоматически открывалось/закрывалось,а остальные меню работали как обычно?
// Автоматически открывать папки закладок на панели закладок, от 22.08.2016. ............... addEventListener('mouseover', (e, targ = e.target)=> { if ( targ.getAttribute('type') != 'menu' || (document.querySelectorAll('[open^="true"]').length > 0 && !document.getElementById('PlacesChevron').hasAttribute('open')) ) return; document.getElementById('PlacesChevronPopup').hidePopup(); setTimeout(()=> { if ( !targ.f ) try { targ.children[0].showPopup(targ, -1, -1, 'popup', 'bottomleft', 'topleft') } catch(e) {}; }, 500, targ.f = false); targ.onmouseleave =()=> { targ.f = true; targ.onmouseleave = null }; }, false, document.getElementById('PlacesToolbar'));
Отсутствует
Уважаемый bunda1,
Мне нужно создать узкую вертикальную панельку (скажем, 3 пикселя в ширину), высотой 400px, размещённую слева (0px от левого края) и в 100px от верха, красного цвета и имеющую что-то типа ID (напр. "MyVerticalPanel");
Как это сделать СВ кнопкой?
И ещё вопрос:
Можно ли сделать узкую горизонтальную панельку в самом верху, над Tab тулбаром (напр. 4px в ширину, длиной 500px, в 600px от левого края, синего цвета)?
Параметры, которые я указал - не столь существенны - просто чтобы я мог с ними "играться".
Заранее спасибо.
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
bunda1
Вы меня не поняли.Кнопка код которой я просил изменить, позволяет при наведении мышкой на любую кнопку не зависимо будь то cb кнопка или элемент браузера,автоматически открываться/закрываться меню если таковое имеется.Навёл мышей на кнопку меню открылось,убрал меню закрылось.Так вот мне хотелось бы чтоб меню автоматически открывалось и закрывалось только на этой кнопке. id = bookmarks-menu-button
Мне что то подсказывает что это можно CSS-стилем сделать.
Отсутствует
bunda1
Так вот мне хотелось бы чтоб меню автоматически открывалось и закрывалось только на этой кнопке.http://s019.radikal.ru/i620/1707/6a/d2a0a11736cb.png id = bookmarks-menu-button
Что то я такую кнопку не вижу. У меня такая двойная:
Добавлено 25-07-2017 20:58:36
Уважаемый bunda1,
Мне нужно создать узкую вертикальную панельку (скажем, 3 пикселя в ширину), высотой 400px, размещённую слева (0px от левого края) и в 100px от верха, красного цвета и имеющую что-то типа ID (напр. "MyVerticalPanel");
Как это сделать СВ кнопкой?
И ещё вопрос:
Можно ли сделать узкую горизонтальную панельку в самом верху, над Tab тулбаром (напр. 4px в ширину, длиной 500px, в 600px от левого края, синего цвета)?
Параметры, которые я указал - не столь существенны - просто чтобы я мог с ними "играться".
Заранее спасибо.
Попробуй доработать VT
Отредактировано bunda1 (25-07-2017 20:58:36)
Отсутствует
difabor пишетУважаемый bunda1,
Мне нужно создать узкую вертикальную панельку (скажем, 3 пикселя в ширину), высотой 400px, размещённую слева (0px от левого края) и в 100px от верха, красного цвета и имеющую что-то типа ID (напр. "MyVerticalPanel");
Как это сделать СВ кнопкой?
И ещё вопрос:
Можно ли сделать узкую горизонтальную панельку в самом верху, над Tab тулбаром (напр. 4px в ширину, длиной 500px, в 600px от левого края, синего цвета)?
Параметры, которые я указал - не столь существенны - просто чтобы я мог с ними "играться".
Заранее спасибо.Попробуй доработать VT
Пытался... Ничего не выходит... Даже сузить не удалось...
Мне это не по зубам
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
bunda1
Прошу прощения.Не указал браузер.Кнопка нужна для Pale Moon 27.4.0 кнопка с дропмаркером.
(()=> { var but = document.getElementById('bookmarks-menu-button'); var bookmarksPopup = document.getElementById('BMB_bookmarksPopup'); but.onmouseover =()=> { bookmarksPopup.showPopup(but, -1, -1, 'popup', 'bottomleft', 'topleft'); but.f = true; }; but.onmouseleave =()=> { but.f = false; setTimeout(()=> !but.f && bookmarksPopup.hidePopup(), 800) }; })();
Отсутствует
bunda1
Не могли бы Вы выполнить мою просьбу:
Если не сложно, сделайте пожалуйста кнопку: "Экспорт закладок в HTML-файл / Импорт закладок из HTML-файла".
Если сложно сделать одной кнопкой, то можно сделать две отдельные - одну для экспорта в HTML-файл, вторую для импорта из HTML-файла.
Отредактировано unter_officer (25-07-2017 22:52:24)
«The Truth Is Out There»
Отсутствует
bunda1
В кнопочке нашёлся изъян.После выделения ПКМ любого пункта меню, невозможно произвести какие либо действия с закладками.Например не выходит ''Удалить'' или попасть в ''Свойства'' - менюшка прячется.Проверял на чистом портабл.Можно ли это подправить?
Отсутствует
bunda1
Не могли бы Вы выполнить мою просьбу:unter_officer пишетЕсли не сложно, сделайте пожалуйста кнопку: "Экспорт закладок в HTML-файл / Импорт закладок из HTML-файла".
Если сложно сделать одной кнопкой, то можно сделать две отдельные - одну для экспорта в HTML-файл, вторую для импорта из HTML-файла.
А почему имено HTML?
Отсутствует
Кто в курсе, как это сделано? эта кнопка "Custom Buttons: Source Editor", но там эта тема и основном коде...
Тут что и кнопка+стили? кнопку надо редактить? может у кого есть готовые, чтобы мы не парились)?
https://lh3.googleusercontent.com/-KmFg03DT0hw/V34TJhYsy2I/AAAAAAAAdFI/wM2HlomsngU/s0/screenshot%2525202016-07-07%252520001.png
-------------------------------------------------------------------------------------------------
(()=> { var but = document.getElementById('bookmarks-menu-button'); var bookmarksPopup = document.getElementById('BMB_bookmarksPopup'); but.onmouseover =()=> { bookmarksPopup.showPopup(but, -1, -1, 'popup', 'bottomleft', 'topleft'); but.f = true; }; but.onmouseleave =()=> { but.f = false; setTimeout(()=> !but.f && bookmarksPopup.hidePopup(), 800) }; })();
toolbarbutton [18×18] namespaceURI: XUL margin: -1px border: 0 padding: 0 id = bookmarks-button class = toolbarbutton-1 chromeclass-toolbar-additional aios-tbutton autoCheck = false command = viewBookmarksSidebar cui-areatype = toolbar group = sidebar label = Bookmarks oncommand = SidebarUI.toggle('viewBookmarksSidebar'); removable = true sidebarurl = chrome://browser/content/bookmarks/bookmarksPanel.xul tooltip = bookmarks-tooltip tooltiptext = Bookmarks type = checkbox
treechildren [266×610] namespaceURI: XUL margin: 0 border: 0 padding: 0 id = bookmarks-view-children class = sidebar-placesTreechildren flex = 1 tooltip = bhTooltip view = bookmarks-view
Отредактировано Gladius333 (26-07-2017 11:02:18)
Отсутствует
bunda1
Добрый день . Можно доработать этот код, в части автоматического закрытия папки закладок на панели закладок, когда с неё убран курсор, с задержкой 0,5 сек.?
// Автоматически открывать папки закладок на панели закладок, от 22.08.2016. ............... addEventListener('mouseover', (e, targ = e.target)=> { if ( targ.getAttribute('type') != 'menu' || (document.querySelectorAll('[open^="true"]').length > 0 && !document.getElementById('PlacesChevron').hasAttribute('open')) ) return; document.getElementById('PlacesChevronPopup').hidePopup(); setTimeout(()=> { if ( !targ.f ) try { targ.children[0].showPopup(targ, -1, -1, 'popup', 'bottomleft', 'topleft') } catch(e) {}; }, 500, targ.f = false); targ.onmouseleave =()=> { targ.f = true; targ.onmouseleave = null }; }, false, document.getElementById('PlacesToolbar'));
Отредактировано Duche (26-07-2017 13:07:48)
Отсутствует