Там eval есть, не знаю, будет ли работать не 139
Гугл не требует сейчас хеш, я без него обхожусь. Ранее гуру подсказал на смежном форуме, что эта строка с eval - обманка, запутывание кода
Отсутствует
замените в своем Save_Script.js
Спасибо, все работает как надо.
«The Truth Is Out There»
Отсутствует
// Счетчик папок/url в паках библиотеки/боковой панели (when used Places Tree)
// + восстановление создания папок/закладок для библиотеки во вкладке
/** @UCF @param {"prop":"JsAllChrome.DOMContentLoaded","urlregxp":"^chrome:\\/\\/browser\\/content\\/(?:browser|places\\/(?:bookmarksSidebar|historySidebar|places))\\.xhtml"} @UCF @UCF @param {"prop":"JsContent.DOMContentLoaded","urlregxp":"^chrome:\\/\\/browser\\/content\\/(?:browser|places\\/(?:bookmarksSidebar|historySidebar|places))\\.xhtml"} @UCF */ // Счетчик папок/url в паках библиотеки/боковой панели (when used Places Tree) // + восстановление создания папок/закладок для библиотеки во вкладке // 2025.5.25 + библиотека, правка Vitaliy V. // 2025.3.10 https://forum.mozilla-russia.org/viewtopic.php?pid=812525#p812525 (async () => { var proto = PlacesTreeView.prototype; proto.addFolderStats = node => { var title = PlacesUIUtils.getBestTitle(node, true); try { if (PlacesUtils.nodeIsContainer(node)) { let query = {}, options = {}; PlacesUtils.history.queryStringToQuery(node.uri, query, options); node = PlacesUtils.history.executeQuery(query.value, options.value).root; if (!node.hasChildren) return title += " (0/0)"; let wasClosed = !node.containerOpen; if (wasClosed) node.containerOpen = true; let urls = 0, containers = 0; for (let ind = 0, max = node.childCount; ind < max; ind++) { let child = node.getChild(ind); if (PlacesUtils.nodeIsURI(child)) urls++; else if (PlacesUtils.nodeIsContainer(child)) containers++; } if (wasClosed) node.containerOpen = false; title += ` (${urls}/${containers})`; } } catch (e) { console.error(e); } finally { return title; } }; Object.assign(proto, windowRoot.ownerGlobal.UcfPrefs.dbg .makeGlobalObjectReference(window).executeInGlobal(`({getCellText: ${proto.getCellText}})`.replace( "PlacesUIUtils.getBestTitle(node, true)", "this.addFolderStats(node)")).return.unsafeDereference()); window.top.gDialogBox ??= windowRoot.ownerGlobal.gDialogBox; window.top.BookmarksEventHandler ??= windowRoot.ownerGlobal.BookmarksEventHandler; })();
Отсутствует
Пункт в контекстном меню закладок - Вернуть удаленное, восстановлена работа для библиотеки открытой во вкладке.
/** @UCF @param {"prop":"JsAllChrome.load","urlregxp":"^chrome:\\/\\/browser\\/content\\/(?:browser|places\\/(?:bookmarksSidebar|places))\\.xhtml"} @UCF @UCF @param {"prop":"JsContent.pageshow","urlregxp":"^chrome:\\/\\/browser\\/content\\/places\\/(?:bookmarksSidebar|places)\\.xhtml"} @UCF */ // Пункт в контекстном меню закладок - Вернуть удаленное // появляется только если есть чего возвращать // https://forum.mozilla-russia.org/viewtopic.php?pid=798678#p798678 // https://forum.mozilla-russia.org/viewtopic.php?pid=801497#p801497 // https://forum.mozilla-russia.org/viewtopic.php?pid=816728#p816728 // правка Vitaliy V. 250525 (async sep => { if (!sep) return; var key = "hasRemoveTransaction"; var raws = windowRoot.ownerGlobal.UcfPrefs.dbg.ref("lazy", PlacesTransactions.undo).TransactionsHistory.proxifiedToRaw; raws[key] ??= entry => { for(var transaction of entry) { if (raws.get(transaction) instanceof PlacesTransactions.Remove) return true; } } var menuitem = document.createXULElement("menuitem"); for(var args of Object.entries({ closemenu: "single", class: "menuitem-iconic", id: "placesCmd_undoRemove", label: "Вернуть удаленное", image: "data:image/svg+xml;base64,77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTAgNTAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+DQogIDxwYXRoIGQ9Ik0yMC44NzUgMTFDMjAuNjkxNDA2IDExLjAyMzQzOCAyMC41MTk1MzEgMTEuMTAxNTYzIDIwLjM3NSAxMS4yMTg3NUw0LjM3NSAyNC4yMTg3NUM0LjEzNjcxOSAyNC40MTAxNTYgNCAyNC42OTUzMTMgNCAyNUM0IDI1LjMwNDY4OCA0LjEzNjcxOSAyNS41ODk4NDQgNC4zNzUgMjUuNzgxMjVMMjAuMzc1IDM4Ljc4MTI1QzIwLjY3NTc4MSAzOS4wMjM0MzggMjEuMDg1OTM4IDM5LjA3MDMxMyAyMS40MzM1OTQgMzguOTAyMzQ0QzIxLjc4MTI1IDM4LjczNDM3NSAyMiAzOC4zODI4MTMgMjIgMzhMMjIgMzEuMDkzNzVDMzIuNjA1NDY5IDMxLjMwODU5NCAzOC4wOTM3NSAzNC40OTYwOTQgNDAuOTA2MjUgMzcuNjU2MjVDNDMuNzY5NTMxIDQwLjg3ODkwNiA0My45OTIxODggNDMuOTA2MjUgNDQgNDRDNDQgNDQgNDQgNDQuMDYyNSA0NCA0NC4wNjI1QzQ0LjAxNTYyNSA0NC42MTMyODEgNDQuNDgwNDY5IDQ1LjA0Njg3NSA0NS4wMzEyNSA0NS4wMzEyNUM0NS41ODIwMzEgNDUuMDE1NjI1IDQ2LjAxNTYyNSA0NC41NTA3ODEgNDYgNDRDNDYgNDQgNDYgNDMuOTM3NSA0NiA0My45Mzc1QzQ2IDQzLjkzNzUgNDYgNDMuODc1IDQ2IDQzLjg3NUM0NS45OTYwOTQgNDMuNjgzNTk0IDQ1Ljg4NjcxOSAzNy42OTkyMTkgNDIuNzgxMjUgMzEuNTYyNUMzOS43MTg3NSAyNS41MDc4MTMgMzMuNTExNzE5IDE5LjQxNDA2MyAyMiAxOS4wNjI1TDIyIDEyQzIyLjAwMzkwNiAxMS43MTA5MzggMjEuODc4OTA2IDExLjQzNzUgMjEuNjY0MDYzIDExLjI0NjA5NEMyMS40NDkyMTkgMTEuMDU0Njg4IDIxLjE2MDE1NiAxMC45NjQ4NDQgMjAuODc1IDExIFogTSAyMCAxNC4wOTM3NUwyMCAyMEMyMCAyMC41NTA3ODEgMjAuNDQ5MjE5IDIxIDIxIDIxQzMyLjUxMTcxOSAyMSAzOC4wODIwMzEgMjYuNjcxODc1IDQxIDMyLjQzNzVDNDEuNzQyMTg4IDMzLjkwNjI1IDQyLjI5Njg3NSAzNS4zNzUgNDIuNzE4NzUgMzYuNzVDNDIuNjAxNTYzIDM2LjYwOTM3NSA0Mi41MzEyNSAzNi40ODQzNzUgNDIuNDA2MjUgMzYuMzQzNzVDMzkuMDg5ODQ0IDMyLjYxMzI4MSAzMi43NTM5MDYgMjkgMjEgMjlDMjAuNDQ5MjE5IDI5IDIwIDI5LjQ0OTIxOSAyMCAzMEwyMCAzNS45MDYyNUw2LjU5Mzc1IDI1WiIgZmlsbD0iI0I0QjRCNCIgLz4NCjwvc3ZnPg==", })) menuitem.setAttribute(...args); menuitem.addEventListener("command", () => PlacesTransactions.undo().catch(Cu.reportError)); var desc = Object.getOwnPropertyDescriptor(XULElement.prototype, "hidden"); var {set} = desc; desc.set = () => { var entry = PlacesTransactions.topUndoEntry; set.call(menuitem, !entry || !raws[key](entry)); } Object.defineProperty(menuitem, "disabled", {}); Object.defineProperty(menuitem, "hidden", desc); sep.before(menuitem); })(document.getElementById("placesContext_deleteSeparator"));
Отсутствует
xrun1
Далеко ходить не пришлось.
Строку с TKK=eval заменить на
// var TKK = ((function() { var a = 817046147; var b = -335196159; return 410049 + '.' + (a + b); })());
Отредактировано _zt (Вчера 21:50:25)
Отсутствует
// Счетчик папок/url в паках библиотеки/боковой панели (when used Places Tree)
// + восстановление создания папок/закладок для библиотеки во вкладке
Вернулся на свой старый вариант. Пусть у меня показывает кол-во только в боковой панели, зато работает шустро.
egorsemenov06
Спасибо за идею с иконками.
Отсутствует