Garalf
Норм. Благодарю. Тут еще упал скрипт
(async sep => { if (!sep) return; var key = "hasRemoveTransaction"; var g = Cu.import("resource://gre/modules/PlacesTransactions.jsm", {}); /* if (!g[key]) { Services.scriptloader.loadSubScript( `data:,this.${key}=TransactionsHistory.proxifiedToRaw;`, g ); var raws = g[key]; */ var raws = g.TransactionsHistory?.proxifiedToRaw; if (raws) g = raws; if (!g[key]) { if (!raws) { Services.scriptloader.loadSubScript( `data:,this.${key}=TransactionsHistory.proxifiedToRaw;`, g ); raws = g[key]; } g[key] = entry => { for(var tr of entry) if (raws.get(tr) 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: "Восстановить удалённое", oncommand: "PlacesTransactions.undo().catch(Cu.reportError);", image: "data:image/svg+xml;charset=utf-8;base64,PCEtLSBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljDQogICAtIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMNCiAgIC0gZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4gLS0+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIGZpbGw9IiMwMEVBM0EiIGZpbGwtb3BhY2l0eT0iY29udGV4dC1maWxsLW9wYWNpdHkiPg0KICA8cGF0aCBkPSJNMTMgMEgzYTMgMyAwIDAgMC0zIDN2OGEzIDMgMCAwIDAgMyAzaDRsLS4zLjRhMSAxIDAgMSAwIDEuNiAxLjJsMS41LTJhMSAxIDAgMCAwIDAtMS4ybC0xLjUtMmExIDEgMCAwIDAtMS42IDEuMmwuMy40SDNhMSAxIDAgMCAxLTEtMVY1aDEydjZhMSAxIDAgMCAxLTEgMSAxIDEgMCAwIDAgMCAyIDMgMyAwIDAgMCAzLTNWM2EzIDMgMCAwIDAtMy0zek0yIDRWM2ExIDEgMCAwIDEgMS0xaDEwYTEgMSAwIDAgMSAxIDF2MXoiLz4NCjwvc3ZnPg0K", })) menuitem.setAttribute(...args); var desc = Object.getOwnPropertyDescriptor(XULElement.prototype, "hidden"); var {set} = desc; desc.set = () => { var entry = PlacesTransactions.topUndoEntry; set.call(menuitem, !entry || !g[key](entry)); } Object.defineProperty(menuitem, "hidden", desc); sep.before(menuitem); })(document.getElementById("placesContext_deleteSeparator"));
Отсутствует
Этот скрипт
Так, я повторю ещё раз.
Без никакого скрипта вообще.
Итак, STR, окно браузера, панель закладок в нём.
ПКМ по закладке на этой панели —> «Удалить закладку».
Закладка удаляется, исчезает, как и ожидалось.
Теперь, вызываем окно консоли (Ctrl+Shift+J)
и запускаем с него PlacesTransactions.undo()
Восторг! Закладка возвращается.
В точности туда же, где и была.
А теперь(!), не сходя с места,
снова ПКМ по этой закладке —> «Удалить закладку».
И... тишина.
Закладка просто молча не удаляется.
Почему так происходит — я не знаю.
Тем не менее — веский повод отказаться от этого кода как такового.
Увы.
Отсутствует
Dumby
Очень надо,шикарная кнопа была
Отредактировано green25 (06-03-2025 09:05:28)
Отсутствует
Почему так происходит — я не знаю.
Тем не менее — веский повод отказаться от этого кода как такового.
Мне очень много приходится работать с закладками, поэтому для меня эта кнопка очень нужная.
Что касается работоспособности на FF136.
Вы мне сами вот ЗДЕСЬ подсказали как эту кнопочку реанимировать, за что вам огромное спасибо:
Вроде этот код был признан непригодным к использованию,
из-за загадочного глюка, возникающего после вызова PlacesTransactions.undo()Но, если абстрагироваться от этого, то что тут сложного?
Там, где устанавливаются атрибуты, изымаем oncommandА вместо этого, далее, пишем строку, добавляющую листенер
menuitem.addEventListener("command", () => PlacesTransactions.undo().catch(Cu.reportError));
И все дела.
Я воспользовался вашим советом и несмотря на глюк продолжаю пользоваться этой кнопочкой.
Отредактировано unter_officer (06-03-2025 09:31:45)
«The Truth Is Out There»
Отсутствует
Отсутствует
несмотря на глюк продолжаю пользоваться этой кнопочкой
Аналогично. Я остался на UCF "version, date year-month-day: 2024-10-31" и на 136 код работает без правки.
И... тишина.
Закладка просто молча не удаляется.
Удаляем и восстанавливаем соседнюю закладку. И повторно удаляем проблемную. Это не повод отказываться от скрипта!
Отсутствует
Удаляем и восстанавливаем соседнюю закладку. И повторно удаляем проблемную. Это не повод отказываться от скрипта!
Можно сделать немного по другому. ПКМ на нужной закладке -> Измениить.
В открывшемся окне "Отмена". И после этого закладку снова можно удалить.
Да, это лишние телодвижения, но такой вариант тоже работает.
Аналогично. Я остался на UCF "version, date year-month-day: 2024-10-31" и на 136 код работает без правки.
Я UCF обновил до крайней версии и исправил код скрипта.
Тем более, что там править то совсем чуть-чуть.
Отредактировано unter_officer (06-03-2025 12:31:04)
«The Truth Is Out There»
Отсутствует
Можно посмотреть ?
// (async sep => { if (!sep) return; var key = "hasRemoveTransaction"; var raws = 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/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAQAAAAEABcxq3DAAAEd0lEQVRIx53Ve2yW5RkG8N/7ft8Hxa/9CgjSSDnMA4xVTUMQWzadhzhnjSCC0y0jSjom+JdGp844ZhSjHLJsowaNZoCCHOWglXGoQbo2fBW3obDNUBfXKpsUVhxn6OHdH8+31GXGmL3/3M913ffzPNed93qeBxvmI8umCNjyPFEDSRJw40qKa9jyHSbdzY77Ar+9FTvZ+nHAb9T7P76YcwlOktlBdJia2SSthfRvaR/Mync5tp85Q2mbEHJ/X0bqRTpOBJyehog3C3j1HV9RQP91xG9T8z2SofyphMELWH4zW5s40s7kQ/T0cnYfXfPD1OgM0TlGzSN1DZkzxG1EdURjaa9HCfddEupfuSkIfHXJ5wVENA8Iw9QcRnbzXj31++g8w+WVZHMhXzaKhu2MGMtd36f5CTrn8WAJyf001KCYpA6dDBtLlOfoYuI6kgp6XuLsbhQRfw39ovDPx7/JgYS1b3NkCxcvoPgTevIULyFVTm4jyinp4uRJiirYt5BMLc15kvE0lnCsgZaE2wdx6LVCo9/ghQn4LhdFxEOonELv8ogVV9Iyjd9fx8T1FE2nq5XSQWQuJbsmrJH9JclMsldhFsW3EU0iuxsb6f9zTA3dHj1J1yPsKaPrIOtnkn6KDY2cvYF/vkfmINGuiPdnUD6Pd/7Mur/x0RCqXqTfj+m5glyO1B8ovR1pijeil6KvBw8V1QaB/QYWzNgSYu+TmMm5GVhKT47OBWR28kgnvxvKS/OjvuMGuTSr72FtBR/WctNe4l+H3GUt7DxB2TKe+CmnF5IZRzSZzFmS4wy9n2QGY2eR3Mx193DqAao+4vh04lZS2/EkQyqo7cWux4Kjwf4gKF3N5hEs+QsLlwVuVRPLP2FeTSh95hZSpSx6OOAkwWCWLSEqYWVz4JtLqd3GiuX0/oS6XKjd/BQbF6SRJynij4eJKpl7WSg8cCdzxjHjH3QuIsaorQx7NCx8QQdxCYM2kzxL423BbGN6SP+I6tmcO86hahqu4MA2To3mX+eTxbA2er6VJjcA/Yl2kOzlrutJxrDraaI1XH09j3fQVk7pcG5sCgIOttLVzejpmMPrnxJvYnIZXelwxGHTCOaX0PorsmUMOC/wpeNofg4fjg9EW3+k6CzcYJ99M7h6fSfxFFJrMZzFm0I+fzXxlTQ1EHf3eSlJyI3mlYGs/yEPx4F7/NkQ11zEymFhnDoY9RnwcHmIZ34Q1CcTkBD9FSM58gu8SmUHbmVuJbYRt2AiE/cwZT/tG3h+Gh29lH3A+VPZ+zMq1rHwcq6tY1U31ReQXPgFt3M+/9+xJRvM9f5S3NnX6btLqfqYt1p44xQrFnH0aX6zmBXIj+Hae0N95qG+ea/PJjrB7tV47csE7CzEJqKXyTcW8CquaibfwTOX0FjPLSfYk+G8XWyb+rlTUcndVUQjWXOK+FiBn/QfQen/FVBVVdhoc4FIkczqM5WBvPMWp4fQMpzFHeEN2NCFCcyNSH2b1AiSl3nhVnrnkjpNkqP9jrBvdzX8G2rIlxvMK3a7AAAAInpUWHRTb2Z0d2FyZQAAeNorLy/Xy8zLLk5OLEjVyy9KBwA22AZYEFPKXAAAAABJRU5ErkJggg==", })) 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"));
«The Truth Is Out There»
Отсутствует
Какае еще манипуляии нужны, в 115 не работает.
Если не ошибаюсь, в 115 должен работать код без всяких правок (проверить сейчас не могу).
Вам давали на него ссылку: https://forum.mozilla-russia.org/viewto … 99#p808799
P.S.
Проверил на FF 115.21.0 ESR.
Работает, как не исправленный вариант скрипта, так и исправленный.
Версия UCF крайняя.
Отредактировано unter_officer (06-03-2025 14:17:33)
«The Truth Is Out There»
Отсутствует
Dumby
С преддыдущей просьбой не парьтесь . Косяк или баг в XPIDatabase.jsm...Рихтанул и все..
Как отключить обновление на конкретный аддон ,через ID ? Версию менять нельзя ,падает зараза...
Отредактировано green25 (07-03-2025 15:30:52)
Отсутствует