Dumby
В FF76 перестала работать кнопка
// Дв. клик по панели вкладок.............. (selectors => addEventListener("dblclick", e => { /* if ( e.button || e.ctrlKey || e.shiftKey || e.altKey || !e.originalTarget.matches(selectors) ) */ if (e.button || e.ctrlKey || e.shiftKey || e.altKey || !( e.target.className == "tabbrowser-arrowscrollbox" || e.originalTarget.matches(selectors) )) return; var hbuTabs = [], param = {animate: false}; gBrowser.selectedTab = gBrowser.tabs[0]; for(var tab of gBrowser.visibleTabs.reverse()) //if (tab.pinned) break; else gBrowser._hasBeforeUnload(tab) ? hbuTabs.push(tab) : gBrowser.removeTab(tab, param); for(tab of hbuTabs) gBrowser.removeTab(tab, param); }, false, document.getElementById("TabsToolbar") || 1))("" + [ "#tabbrowser-tabs [class*=scrollbox]", "toolbarspring", "#TabsToolbar", ]);
Отсутствует
«Merge Day»
custom_buttons-0.0.7.0.0.12-fx.txt
egorsemenov06 пишетВыручайте в кнопке Save не работает Открыть выделенный текст в внешнем редакторе, в контекстном меню. в консоле пишет ReferenceError: custombuttonsUtils is not defined
Да, за всем не уследишь.
Большое спасибо!!!
Отсутствует
В FF76 перестала
Bug 1625895 - Change tabbrowser-arrowscrollbox from class to id
Так, наверно
//e.target.className == "tabbrowser-arrowscrollbox" e.target.id == "tabbrowser-arrowscrollbox"
Отредактировано Dumby (05-05-2020 12:11:01)
Отсутствует
«Merge Day»
custom_buttons-0.0.7.0.0.12-fx.txt
В следйющей версии дополнения, добавьте пожалуйста строку для Pale Moon 29, чтобы не ругался....
С 27-й, т.к. есть ещё фанаты остающиеся на этой версии браузера.
<!-- Pale Moon --> <em:targetApplication> <Description> <em:id>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</em:id> <em:minVersion>27.0</em:minVersion> <em:maxVersion>*</em:maxVersion> </Description> </em:targetApplication>
То бишь Pale Moon 29 ругается на дополнения без этой подпись.
Отредактировано Quartz1t (06-05-2020 13:57:17)
Отсутствует
Dumby подскажи на 76 выскакивает вот такая ошибка
TypeError: Custom Buttons: addEventListener: eventTarget is not instanceof nsIDOMEventTarget or EventTarget
Причем, если открыть и закрыть кнопку, то код работает
// Редактировать размеры поля выбора вкладок в окне добавления закладки звёздочки ((panel, css) => addEventListener("popupshowing", { pref: "CB.editBMPanel_folderTreeRow_WidthHeight", handleEvent(e) { css = encodeURIComponent(css.replace(/;/g, " !important;")); var args = ["data:text/css," + css, windowUtils.USER_SHEET]; windowUtils.loadSheetUsingURIString(...args); var row = this.row = document.getElementById("editBMPanel_folderTreeRow"); addEventListener("popuphidden", this, false, panel); addDestructor(reason => { windowUtils.removeSheetUsingURIString(...args); row.removeAttribute("width"); row.removeAttribute("height"); reason == "delete" && Services.prefs.clearUserPref(this.pref); }); this.handleEvent = e => e.target == panel && this[e.type](); this.popupshowing(); }, popupshowing() { var [width, height] = Services.prefs.getStringPref(this.pref, "332 184").split(" "); this.row.width = width; this.row.height = height; gEditItemOverlay.toggleFolderTreeVisibility(); }, popuphidden() { var {width, height} = this.row; Services.prefs.setStringPref(this.pref, width + " " + Math.max(184, height)); } }, false, panel || 1))(document.getElementById("editBookmarkPanel"), ` #editBookmarkPanel #editBMPanel_folderTreeRow { resize: both; overflow: hidden; min-width: 332px; } #editBookmarkPanel box.panel-header { padding: 0; border: none; } #editBookmarkPanel #editBookmarkPanelRows { padding-top: 0; } #editBookmarkPanel #editBMPanel_keywordRow, #editBookmarkPanel #editBMPanel_locationRow { visibility: visible; } #editBookmarkPanel #editBMPanel_tagsRow > hbox, #editBookmarkPanel #editBMPanel_folderRow > hbox, #editBookmarkPanel #editBookmarkPanelRows > vbox:not([id*="folderTree"]):not([id*="tagsSelector"]) { display: flex; align-items: center; } #editBookmarkPanel #editBMPanel_tagsField, #editBookmarkPanel #editBMPanel_folderMenuList, #editBookmarkPanel #editBookmarkPanelRows > vbox > label:first-child + * { flex-grow: 1; } #editBookmarkPanel moz-input-box { width: 100%; } `);
//Открыть всё из папки закладок в новых вкладках не загружая страниц от 23.03.2019...................................................................... ((g, id) => { addDestructor(r => r[5] == "e" && id in g && (g.PlacesUIUtils[id] = g[id]) && delete g[id]); if (id in g) return; g[id] = g.PlacesUIUtils[id]; var func = g => PlacesUIUtils.openMultipleLinksInTabs = async function(nodeOrNodes, event, view) { var where, win = getBrowserWindow(view.ownerWindow); var newWin = !win || (where = win.whereToOpenLink(event, false, true)) == "window"; var items = PlacesUtils.nodeIsContainer(nodeOrNodes) ? PlacesUtils.getURLsForContainerNode(nodeOrNodes) : Array.from(nodeOrNodes).filter(PlacesUtils.nodeIsURI); if (newWin) { var args = Cc["@mozilla.org/array;1"].createInstance(Ci.nsIMutableArray); args.appendElement(PlacesUtils.toISupportsString(items.shift().uri)); win = Services.ww.openWindow( win || null, AppConstants.BROWSER_CHROME_URL, null, "chrome,dialog=no,all", args ); if (!items.length) return; await new Promise(resolve => win.addEventListener("load", resolve, {once: true})); } var loadInBackground = where == "tabshifted"; var insertAfterCurrent = !newWin && Services.prefs.getBoolPref("browser.tabs.insertAfterCurrent"); var triggeringPrincipal_base64 = g.Utils.SERIALIZED_SYSTEMPRINCIPAL || g.E10SUtils.SERIALIZED_SYSTEMPRINCIPAL; var multi = items.length > 1; var params = { skipAnimation: multi || newWin, bulkOrderedOpen: multi, createLazyBrowser: true }; if (insertAfterCurrent) params.index = win.gBrowser.selectedTab._tPos; var first = true; for(var {uri, title} of items) { if (insertAfterCurrent) params.index += 1; var tab = win.gBrowser.addTrustedTab(null, params); var state = { index: 1, hidden: false, attributes: {}, lastAccessed: 0, entries: [{url: uri, title, triggeringPrincipal_base64}] }; var image = await new Promise(resolve => PlacesUtils.favicons.getFaviconDataForPage( Services.io.newURI(uri), (uri, len, data, type) => { if (!len) return resolve(); var reader = new FileReader(); reader.onloadend = () => resolve(reader.result); reader.readAsDataURL(new Blob([new Uint8Array(data)], {type})); }, 16 )); if (image) state.image = image; g.SessionStore.setTabState(tab, JSON.stringify(state)); if (first) { first = false; if (newWin) continue; if (multi && insertAfterCurrent) params.index = tab._tPos; // if (!loadInBackground) win.gBrowser.selectedTab = tab; } } } Services.scriptloader.loadSubScript("data:," + encodeURIComponent( `(${func})(Cu.import("resource:///modules/sessionstore/SessionStore.jsm", {}))` ), g); })(Cu.import("resource:///modules/PlacesUIUtils.jsm", {}), "openMultipleLinksInTabs");
Отредактировано Andrey_Krropotkin (07-05-2020 09:26:01)
Отсутствует
подскажи на 76 выскакивает вот такая ошибка
TypeError: Custom Buttons: addEventListener: eventTarget is not instanceof nsIDOMEventTarget or EventTarget
Так и должно быть, специально написано: «panel || 1»,
чтобы листенер молча не ушёл в окно, если с panel что-то случится.
̣
А с panel случилось то, что её засунули в <html:template>,
и, похоже, собираются такое проделывать не только с ней.
У меня сейчас так:
((css, panel) => ({ init() { panel = document.getElementById("editBookmarkPanel"); if (panel) { addEventListener("popupshowing", this, false, panel); this.destroy && this.destroy(); return; } else if (this.destroy) return; var mo = new MutationObserver(this.init.bind(this)); mo.observe(document.getElementById("mainPopupSet"), {childList: true}); addDestructor(this.destroy = reason => { mo.disconnect(); if (reason) return; self._destructors.splice(self._destructors.findIndex( d => d.destructor == this.destroy ), 1); delete this.destroy; }); }, pref: "CB.editBMPanel_folderTreeRow_WidthHeight", handleEvent(e) { css = encodeURIComponent(css.replace(/;/g, " !important;")); var args = ["data:text/css," + css, windowUtils.USER_SHEET]; windowUtils.loadSheetUsingURIString(...args); var row = this.row = document.getElementById("editBMPanel_folderTreeRow"); addEventListener("popuphidden", this, false, panel); addDestructor(reason => { windowUtils.removeSheetUsingURIString(...args); row.removeAttribute("width"); row.removeAttribute("height"); reason == "delete" && Services.prefs.clearUserPref(this.pref); }); this.handleEvent = e => e.target == panel && this[e.type](); this.popupshowing(); }, popupshowing() { var [width, height] = Services.prefs.getStringPref(this.pref, "332 184").split(" "); this.row.width = width; this.row.height = height; gEditItemOverlay.toggleFolderTreeVisibility(); gEditItemOverlay._paneInfo.visibleRows.add("keywordRow"); gEditItemOverlay._element("keywordRow").collapsed = false; gEditItemOverlay._initKeywordField().catch(Cu.reportError); }, popuphidden() { var {width, height} = this.row; Services.prefs.setStringPref(this.pref, width + " " + Math.max(184, height)); } }).init())(` #editBookmarkPanel #editBMPanel_folderTreeRow { resize: both; overflow: hidden; min-width: 332px; } #editBookmarkPanel box.panel-header { padding: 0; border: none; } #editBookmarkPanel #editBookmarkPanelInfoArea { display: none; } #editBookmarkPanel #editBookmarkPanelRows { padding-top: 0; } #editBookmarkPanel #editBMPanel_locationRow { visibility: visible; } #editBookmarkPanel #editBMPanel_tagsRow > hbox, #editBookmarkPanel #editBMPanel_folderRow > hbox, #editBookmarkPanel #editBookmarkPanelRows > vbox:not([id*="folderTree"]):not([id*="tagsSelector"]) { display: flex; align-items: center; } #editBookmarkPanel #editBMPanel_tagsField, #editBookmarkPanel #editBMPanel_folderMenuList, #editBookmarkPanel #editBookmarkPanelRows > vbox > label:first-child + * { flex-grow: 1; } #editBookmarkPanel moz-input-box { width: 100%; } `);
и вот еще одна ошибка - TypeError: g.Utils is undefine
Можно так записать: g.Utils && g.Utils.SERIALIZED_SYSTEMPRINCIPAL
или вообще удалить.
Отсутствует
Dumby спасибо, разобрался
Отсутствует
Dumby сделайте пожалуйста эту кнопку для user_chrome_files
var closer = { observe: function(subject, topic, data) { if ( data == "shutdown" ){ var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.initWithPath(file.path + "\\sqlite.bat"); file.launch(); } } }; Services.obs.addObserver(closer, "quit-application", false);
Отсутствует
egorsemenov06
В custom_script.js
try {Services.obs.addObserver(function closer(s, topic, data) { Services.obs.removeObserver(closer, topic); if (data != "shutdown") return; var file = Services.dirsvc.get("ProfD", Ci.nsIFile); file.launch(file.append("sqlite.bat")); }, "quit-application", false);} catch(ex) {Cu.reportError(ex);}
Отсутствует
egorsemenov06
В custom_script.jsскрытый текстВыделить кодКод:
try {Services.obs.addObserver(function closer(s, topic, data) { Services.obs.removeObserver(closer, topic); if (data != "shutdown") return; var file = Services.dirsvc.get("ProfD", Ci.nsIFile); file.launch(file.append("sqlite.bat")); }, "quit-application", false);} catch(ex) {Cu.reportError(ex);}
Большое спасибо!!!
Отсутствует
В чем фишка custom_script.js , чем кнопка хуже? И почему батник, а не VBS ?
тоже интересовал вопрос повальной переписью кнопок на ucjs, это конечно не плохо, я сам начал с ucjs, потом уже нашел кнопки)
но почему в формате Виталия, вероятно, чтобы поддерживать форум
погалаю, что автор предусматривает возможность закрытия поддержки CB, устал, понимаю
Отсутствует
В чем фишка custom_script.js , чем кнопка хуже?
Код инициализации кнопок исполняется в каждом окне браузера,
после открытия окна, а также после редактирования и при взаимодействии
с режимом «Персонализация…» (при перетаскивании — многократно).
А custom_script.js исполняется только один раз, при старте браузера.
Говоря нестрого, его можно назвать филиалом config.js в профиле.
То есть, для данной задачи, подходит идеально.
И почему батник, а не VBS ?
А мне-то почём знать? Это надо спрашивать у того, кто запускает.
вероятно,
погалаю, что
Да-да, вариант «просто потому, что чел попросил,
и попросил в определённом формате» совершенно невероятен,
примерно так же, как то, что всё зависит от факторов, куда более
серьёзных и могущественных, чем чьи-то там «предусмотрения».
Отсутствует
DumbyГде косяк?
try {Services.obs.addObserver(function closer(s, topic, data) {
Services.obs.removeObserver(closer, topic);
if (data != "shutdown") return;
var file = Services.dirsvc.get("ProfD", Ci.nsIFile);
file.launch(file.append("\\memreduct\\s.vbs"));
}, "quit-application", false);} catch(ex) {Cu.reportError(ex);}
custom_script.js - в chrome лежит?
Отсутствует
solombala
Косяк здесь: file.append("\\memreduct\\s.vbs")
Можно так: ["memreduct", "s.vbs"].forEach(file.append)
custom_script.js лежит в %Папка_Профиля%\chrome\user_chrome_files\custom_scripts
Отсутствует
Dumby
Та ну...Ни кураца не работао ,курвье...И это тоже..
Сам custom_script.js как выглядао?
Отредактировано solombala (11-05-2020 19:46:49)
Отсутствует
Dumby
Та ну...Ни кураца не работао ,курвье...И это тоже..скрытый текстtry {Services.obs.addObserver(function closer(s, topic, data) {
Services.obs.removeObserver(closer, topic);
if (data != "shutdown") return;
var file = Services.dirsvc.get("ProfD", Ci.nsIFile);
file.launch(file.append("sqlite.bat"));
}, "quit-application", false);} catch(ex) {Cu.reportError(ex);}Сам custom_script.js как выглядао?
Все работаетhttps://github.com/VitaliyVstyle/Vitali … f/toolbars подключаете скрипты и все в ажуре
Отсутствует
egorsemenov06
Все так и делал...Батник не срабатывает...
Отсутствует
solombala
У тебя вообще user-chrome-files работает? настройки смотрел? about:user-chrome-files ?
перезапуск ПКМ после редактирования скриптов?
Отсутствует
del
Отредактировано egorsemenov06 (11-05-2020 23:37:15)
Отсутствует
Vitaliy V.
Этот срабатывает
Отсутствует
solombala
ну Dumby же тебе подсказал замени свой косяк
file.launch(file.append("\\memreduct\\s.vbs"));
на
file.launch(["memreduct", "s.vbs"].forEach(file.append));
P.S. это при условии что папка memreduct находится в профиле
Отредактировано Vitaliy V. (12-05-2020 00:05:43)
Отсутствует