>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Сustom Buttons http://forum.mozilla-russia.org/viewforum.php?id=34 >[CB]Session Bookmarks http://forum.mozilla-russia.org/viewtopic.php?id=57871 |
Infocatcher > 26-01-2013 23:39:32 |
Session Bookmarks 0.2.1 (2013-10-11) Кнопка: В списке: Перетаскивание: Скриншоты:
Установить: sessionBookmarks.html |
Infocatcher > 27-01-2013 00:41:40 |
Тестовая версия, будьте осторожны! |
Maxut > 23-06-2013 15:45:57 |
как сделать,чтобы после клика по закладке меню не закрывалось,а закрывалось когда курсор с меню уберёшь? |
Infocatcher > 23-06-2013 16:15:06 |
Maxut пишет
Есть вот такие настройки: Выделить код Код:var options = { ... leftClickCloseMenu: true, // Close menu after left-click middleClickCloseMenu: 1, // After middle-click: // 0 - always stay menu open // 1 - close only after click without modifiers // 2 - always close Maxut пишет
Это нестандартное поведение, оно не реализовано. |
Maxut > 23-06-2013 17:58:17 |
Спасибо. |
Infocatcher > 17-10-2013 15:01:02 |
Session Bookmarks 0.2.1 (2013-10-11) |
difabor > 19-10-2013 05:58:03 |
Иногда требуется открыть закладку в сайдбаре. Более того, в этом случае очень важны параметры как вертикальной, так и горизонтальной прокрутки, а также зум. |
Infocatcher > 21-10-2013 17:19:49 |
difabor пишет
Не уверен, что это возможно – нету аналога nsISessionStore.setTabState() для боковой панели. difabor пишет
Это не очень хорошо для производительности, когда что-то постоянно проверяется. Не знаю. difabor пишет
Это можно, надо только подумать насчет индикации удаления. difabor пишет
Есть какая-то практическая польза? difabor пишет
Сейчас можно импортировать/экспортировать вручную, перемещая или редактируя файлы %профиль_Firefox%/custombuttons/bookmarks-%номер_кнопки%.txt. |
difabor > 21-10-2013 18:17:41 |
Спасибо. |
difabor > 24-10-2013 02:24:13 |
Кстати, у меня возникла идея простой (имхо) индикации удаления. |
Infocatcher > 13-11-2013 20:46:56 |
difabor difabor пишет
Это нужно вторую иконку иметь, потому как фон кнопок меняется только вместе со сбросом стандартных стилей. Или можно попробовать что-нибудь сделать с box-shadow. |
villi311 > 15-11-2013 17:23:40 |
Подскажите пожалуйста, как поменять чтобы ЛКМ открывалось в новой вкладке, а СКМ или Ctrl+ЛКМ в текущей?
|
Infocatcher > 15-11-2013 18:45:58 |
villi311 Выделить код Код:var options = { ... invertLoadBehavior: false, // true => left-click open bookmark in new tab false -> true |
bunda1 > 15-11-2013 20:19:52 |
Infocatcher пишет
После изменений настроек в кнопке + Ok пункт меню Добавить страницу в закладки-сессии в контекстном меню страницы дублируется. |
villi311 > 15-11-2013 21:29:44 |
Infocatcher пишет
Огромное спасибо. Теперь все как хотелось. |
Infocatcher > 15-11-2013 21:45:17 |
bunda1 пишет
В разрабатываемой версии переделана инициализация, там с этим лучше – только не стоит слишком часто жать Ctrl+S в редакторе. В крайнем случае можно прицепить вот это исправление к менее экспериментальной версии. |
bunda1 > 15-11-2013 22:02:03 |
Спасибо. |
voqabuhe > 03-04-2015 13:41:25 |
Infocatcher |
Infocatcher > 04-04-2015 22:09:32 |
voqabuhe пишет
https://github.com/Infocatcher/Custom_Buttons/issues/33 |
voqabuhe > 04-04-2015 23:45:05 |
Infocatcher пишет
О, спасибо. Всё работает, всё отлично. Теперь очень удобно стало, а то пока нащёлкаешь туда штук 20 за раз... ) |
villi311 > 28-05-2015 00:06:24 |
Давно уже хотел узнать, может я что то делаю не так, но почему у меня в большинстве сохраненных ссылок нет иконок, хотя в свойствах ссылки адрес иконки присутствует и при проверке иконка видна. |
Infocatcher > 28-05-2015 13:10:55 |
villi311 пишет
Хм, а в обычных закладках иконки есть? Вот если те же страницы сохранить. |
villi311 > 28-05-2015 13:18:02 |
Infocatcher пишет
Да, в обычных есть. Infocatcher пишет
Я попробую, а что это дает? |
Infocatcher > 28-05-2015 19:57:20 |
villi311 пишет
Хм, ну вообще обычные закладки должны бы вести себя точно так же, по идее. villi311 пишет
В кнопке сделано примерно как в самом Firefox, иконки не грузятся заново при открытии окна, а берутся из кэша. Для этого есть специальный протокол, например, для яндекса: |
villi311 > 28-05-2015 21:43:56 |
Infocatcher пишет
Вы извините, я в этом всем очень слабо разбираюсь. |
Infocatcher > 28-05-2015 21:50:02 |
villi311 скрытый текст Выделить код Код:cachedIcon: function(src) { src = src.replace(/[&#]-moz-resolution=\d+,\d+$/, ""); // Firefox 22.0a1 if( !/^https?:/.test(src) // IDN, see https://bugzilla.mozilla.org/show_bug.cgi?id=311045 || /^https?:\/\/[^.:\/]+\.[^a-z0-9-]+(?:\/|$)/.test(src) || this.appName == "SeaMonkey" && this.appVersion <= 2 || this.appName == "Firefox" && this.appVersion <= 3.5 ) return src; return "moz-anno:favicon:" + src; // https://bugzilla.mozilla.org/show_bug.cgi?id=467828 }, на скрытый текст Выделить код Код:cachedIcon: function(src) { return src; // Always bypass cache src = src.replace(/[&#]-moz-resolution=\d+,\d+$/, ""); // Firefox 22.0a1 if( !/^https?:/.test(src) // IDN, see https://bugzilla.mozilla.org/show_bug.cgi?id=311045 || /^https?:\/\/[^.:\/]+\.[^a-z0-9-]+(?:\/|$)/.test(src) || this.appName == "SeaMonkey" && this.appVersion <= 2 || this.appName == "Firefox" && this.appVersion <= 3.5 ) return src; return "moz-anno:favicon:" + src; // https://bugzilla.mozilla.org/show_bug.cgi?id=467828 }, villi311 пишет
С этим сложнее... видимо, какая-то проблема со встроенным механизмом иконок, не совсем понятно, как чинить. А вот убрать кэширование – это легко. |
villi311 > 29-05-2015 14:25:44 |
Infocatcher пишет
Спасибо, все получилось и работает. Теперь при удалении кэша, иконки не удаляются. |
Baron_ > 14-06-2015 17:52:09 |
Скажите, уважаемый Infocatcher, возможно ли реализовать в данной кнопке создание папок для закладок? |
Infocatcher > 14-06-2015 21:17:05 |
Baron_ пишет
Это слишком сложно. |
Baron_ > 15-06-2015 00:47:37 |
Жаль, было бы здорово. |
oleg953 > 15-06-2015 13:17:14 |
Всем добрый. Незнаю где спросить ,спрошу здесь.В опере была у меня такая бабаська Как нечто подобное зделать в ff? Спасибо. |
villa7 > 15-06-2015 13:25:02 |
oleg953 |
Coroner > 18-08-2015 23:19:55 |
Добрый времени суток. |
Vladimir_S > 19-08-2015 08:34:13 |
Coroner пишет
А с СВ в Developer (возможно, правда, только в режиме e10s) вообще проблемы. Я уже это отмечал здесь. Так что я пока от СВ отказался, подобрав расширения со сходным функционалом. Надеюсь, утрясётся. |
Coroner > 19-08-2015 11:50:57 |
Vladimir_S пишет
Благодарю за подсказку и ссылку. Обидно, я лишь 5 дней назад её (Developer) установил. Хотя профиль просто с 40 перенёс и кнопки не проверял, но часть из них вроде работала, впрочем такие, что не сильно завязаны на функционал, то есть открытие приложения или чего-либо во вкладке. И то, повторюсь, могу ошибиться. Возможно после самого последнего обновления (вчера) это и случилось. Да ещё и с закладками непонятки стали. |
Infocatcher > 21-08-2015 11:57:40 |
Vladimir_S пишет
Там протокол не регистрируется, кнопки неудобно ставить. |
Infocatcher > 21-08-2015 14:24:16 |
Я подправил, теперь хотя бы работает (или делает вид... там насчет обхода кэша явно сломано еще): |
bezuma > 29-11-2016 20:05:14 |
Infocatcher |
Infocatcher > 29-11-2016 20:57:43 |
bezuma пишет
Подправил: https://github.com/Infocatcher/Custom_B … d5809b091f |
bezuma > 29-11-2016 22:38:59 |
Infocatcher |
Ultima2m > 15-12-2016 17:06:10 |
Перестало работать перетаскивание закладок в списке. |
bezuma > 15-12-2016 18:38:46 |
Ultima2m |
Ultima2m > 15-12-2016 20:29:07 |
bezuma пишет
Точно. Как-то просмотрел исправление. Спасибо, работает. |
Dumby > 24-09-2017 15:56:59 |
Infocatcher Выделить код Код:window.openDialog( "data:application/vnd.mozilla.xul+xml," + encodeURIComponent(dialog.replace(/^\s+/, "")), Похоже на FF 57 и 58 это больше не работает. Пробовал на протокол resouce: перевести — не помогает (на протокол about: не пробовал). Есть какие-нибудь идеи по всей этой ситуации? Ну, и снова дичь. Вроде чем-то похоже на persist, но неуверен скрытый текст Выделить код Код:properties: function(mi) { ... }\n\ init();\n' + (this.before57 ? "" : '\ window.onpageshow = () => {\n\ var callback = () => bookmarks.persist(document);\n\ var mo = new MutationObserver(callback);\n\ mo.observe(document.documentElement, {\n\ attributes: true, attributeFilter: ["screenX", "screenY", "width", "height"]\n\ });\n\ window.addEventListener("unload", () => {\n\ callback();\n\ mo.disconnect();\n\ }, {once: true});\n\ }\n\ window.opener.URL.revokeObjectURL(window.location.href);\n' ) + '\ ]]></script>\n\ </dialog>'; /* window.openDialog( "data:application/vnd.mozilla.xul+xml," + encodeURIComponent(dialog.replace(/^\s+/, "")), "_blank", "chrome,all,resizable,centerscreen,dependent", mi, this, _localize ); */ dialog = dialog.replace(/^\s+/, ""); if(this.before57) var url = "data:application/vnd.mozilla.xul+xml," + encodeURIComponent(dialog); else { var url = URL.createObjectURL(new Blob([dialog], {type: "application/vnd.mozilla.xul+xml"})); if(Services.prefs.prefHasUserValue(this.pref)) { var id = this.button.id + "-propertiesDialog"; var attrs = JSON.parse(Services.prefs.getCharPref(this.pref)); for(var attr in attrs) { this.xs.setValue(url, id, attr, attrs[attr]); } } } window.openDialog(url, "_blank", "chrome,all,resizable,centerscreen,dependent", mi, this, _localize); }, get before57() { var yes = this.appVersion < 57; if(!yes) { var pref = this.pref = "extensions." + this.button.id + ".propertiesDialog"; addDestructor(function(reason) { if(reason == "delete") Services.prefs.clearUserPref(pref); }); this.xs = Components.classes["@mozilla.org/xul/xulstore;1"] .getService(Components.interfaces.nsIXULStore); this.persist = function(doc) { var url = doc.location.href; var dialog = doc.documentElement, id = dialog.id; var obj = {}; ["screenX", "screenY", "width", "height"].forEach(function(attr) { if(dialog.hasAttribute(attr)) obj[attr] = dialog.getAttribute(attr); }); Services.prefs.setCharPref(pref, JSON.stringify(obj)); var en = this.xs.getAttributeEnumerator(url, id); while(en.hasMore()) { this.xs.removeValue(url, id, en.getNext()); } } } delete this.before57; return this.before57 = yes; }, |
Infocatcher > 04-10-2017 21:06:39 |
Dumby |
xrun1 > 16-09-2019 14:09:50 |
Infocatcher |
Infocatcher > 16-09-2019 22:35:31 |
xrun1 пишет
Новая версия сама переключает security.data_uri.* (и у меня даже на каком-то из тестовых профилей, кажется, работало, но я уже не уверен, какая там была версия). Окно как бы и открывается, но маленькое и прозрачное. А при открытии такой же data:… ссылки во вкладке ругается на «Удалённый XUL», как при открытии XUL-файлов через file:// без dom.allow_XUL_XBL_for_file = true). |
xrun1 > 17-09-2019 00:14:10 |
Infocatcher |
Infocatcher > 17-09-2019 21:05:19 |
xrun1 пишет
Причем если вытащить кнопку на панель меню (вне вкладочного контейнера) – все заработает... События перетаскивания перехватывает tabbrowser-tabs.js. И все бы ничего, но в event.target, если событие все же перехватить до вкладочного контейнера, будет безликий <toolbox>, как будто перетаскивание происходит на всю область кнопочных панелей. Если вдруг кто-то захочет поиграться Выделить код Код:@@ -374,6 +374,7 @@ }, init: function() { _log("init()"); + window.addEventListener("dragover", this, true); window.addEventListener("drop", this, true); setTimeout(function(_this) { _this.delayedInit(); @@ -507,14 +508,17 @@ } if(this.options.itemInPageContextMenu) this.destroyPageContextMenu(force); + window.removeEventListener("dragover", this, true); window.removeEventListener("drop", this, true); }, handleEvent: function(e) { var type = e.type; if(type == "popupshowing" && e.target == e.currentTarget) this.updatePageContextItemVisibility(); + else if(type == "dragover") + this.fixTabDrop(e); else if(type == "drop") - this.handleBookmarkDrop(e); + this.fixTabDrop(e) || this.handleBookmarkDrop(e); else if(type == "DOMMenuItemActive" || type == "DOMMenuItemInactive") this.showLink(e); }, @@ -1961,6 +1965,21 @@ sss.loadAndRegisterSheet(cssURI, sss.USER_SHEET); else if(!add && has) sss.unregisterSheet(cssURI, sss.USER_SHEET); + }, + fixTabDrop: function(e) { + if(!e.dataTransfer.types.contains("application/x-moz-tabbrowser-tab")) + return false; + var trg = e.originalTarget || e.target; + Components.classes["@mozilla.org/consoleservice;1"] + .getService(Components.interfaces.nsIConsoleService) + .logStringMessage("xxx " + trg.localName + " " + trg.closest("toolbarbutton")); + if(trg.closest && trg.closest("toolbarbutton[cb-init]") != this.button) + return false; + e.stopPropagation(); + if(e.type == "dragover") + this.handleDragOver(e); + else + this.handleDrop(e); + return true; }, handleBookmarkDrop: function(e) { var dt = e.dataTransfer; |
xrun1 > 18-09-2019 02:19:00 |
Infocatcher |
Dumby > 18-09-2019 18:16:05 |
Infocatcher пишет
Да, поигрался на Firefox 69. И так, и сяк, глухо вообще. скрытый текст Выделить код Код:this.bookmarks.fixer = ({ bm: this.bookmarks, init: function() { addEventListener("dragstart", this, false, gBrowser.tabs[0].flattenedTreeParentNode); return this; }, getRect: function(node) { var x = node.screenX, y = node.screenY; return [x, x + node.clientWidth, y, y + node.clientHeight]; }, pointInRect: function(x, y, rect) { var [lx, rx, ty, by] = rect; return x >= lx && x <= rx && y >= ty && y <= by; }, handleEvent: function(e) { this.btnRect = this.getRect(this.bm.button); }, fix: function(e) { var x = e.screenX, y = e.screenY; var res = this.pointInRect(x, y, this.btnRect); if(res) res = this.bm.button; else if(this.bm.button.open) { var box = this.bm.mp.children[0] .flattenedTreeParentNode.parentNode; var arr = [box._scrollButtonUp, box._scrollButtonDown] .concat(Array.from(this.bm.mp.children)); res = arr.find(function(node) { return this.pointInRect(x, y, this.getRect(node)); }, this); if(res) { if(res.localName == "toolbarbutton") { res.dispatchEvent(new MouseEvent("mouseover", {})); return; } box._stopScroll(); } } if(res) return { target: res, screenX: x, screenY: y, type: e.type, dataTransfer: e.dataTransfer, preventDefault: e.preventDefault.bind(e), stopPropagation: e.stopPropagation.bind(e) }; } }).init(); this.bookmarks.fixTabDrop = function(e) { if(!e.dataTransfer.types.contains("application/x-moz-tabbrowser-tab")) return false; e = this.fixer.fix(e); if(!e) return false; e.stopPropagation(); if(e.type == "dragover") this.handleDragOver(e); else this.handleDrop(e); return true; } |
voqabuhe > 21-03-2020 23:32:30 |
Infocatcher |
Infocatcher > 22-03-2020 15:14:37 |
voqabuhe |
xrun1 > 27-09-2023 12:36:08 |
Копка отвалилась в 117. Может и раньше, давно не проверял. Можно поправить (очень удобная, несмотря на некоторые косяки в новых версиях)? |