Объявление

В связи с наплывом спама и ботов на форуме, регистрация новых пользователей будет приостановлена. О восстановлении регистрации будет сообщено дополнительно

Administrator

№212629-05-2025 11:29:20

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1873
UA: Firefox 140.0

Re: UCF - ваши кнопки, скрипты…

dinn
Так выше речь тоже про ПКМ.
А вообще есть стиль, которому 1000 лет.

скрытый текст

Выделить код

Код:

/* 'удалить куки и данные сайта' всегда видимый, цвет когда он д.б. скрыт */
#identity-popup-clear-sitedata-footer[hidden="true"] {
    display: flex !important;
    color: rgb(200,110,0) !important;
}
@media (prefers-color-scheme: dark) {
    #identity-popup-clear-sitedata-footer[hidden="true"] {
        color: rgb(154,128,14) !important;
    }
}


Сейчас вот так можно записать
скрытый текст

Выделить код

Код:

/* 'удалить куки и данные сайта' всегда видимый, цвет когда он д.б. скрыт */
#identity-popup-clear-sitedata-footer[hidden="true"] {
    display: flex !important;
    font-weight: bold !important;
    color: rgb(200,110,0) !important;
    @media (prefers-color-scheme: dark) {
        color: rgb(154,128,14) !important;
    }
}

Отредактировано _zt (29-05-2025 11:36:58)

Отсутствует

 

№212729-05-2025 17:04:40

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 1319
UA: Firefox 139.0

Re: UCF - ваши кнопки, скрипты…

Коллеги, объясню свою мысль подробнее.
Я знаю, что можно удалить всё и вся без лишних вопросов кнопкой (здесь почти средний вариант из 3-х ссылок)

clear_history.js

Выделить код

Код:

/* https://forum.mozilla-russia.org/viewtopic.php?pid=780423#p780423
   https://forum.mozilla-russia.org/viewtopic.php?pid=790598#p790598
   есть новая версия https://forum.mozilla-russia.org/viewtopic.php?pid=809326#p809326 */
// Очистить историю
try {
    ((img, preventClearThumbs) => {
        CustomizableUI.createWidget({
            id: "bt-clear-history",
            label: "Очистить историю",
            tooltiptext: "Очистить историю",
            defaultArea: CustomizableUI.AREA_NAVBAR,
            onCreated: function(bt) {
                bt.image = img;
            },
            onCommand: function(event) {
                var win = event.target.ownerDocument.defaultView;
                var itemsToClear = [
                    "cookies",
//                    "history",
//                    "formdata",
//                    "sessions",
                    "cache",
//                    "downloads",
//                    "offlineApps",
//                    "pluginData",
//                    "siteSettings",
                ];
                var range = win.Sanitizer.getClearRange(0);
// 0 - всё; 1 - за час; 2 - за 2 часа; 3 - за 4 часа; 4 - за сегодня
                win.Sanitizer.sanitize(itemsToClear, {
                    ignoreTimespan: !range,
                    range,
                }).then(() => {
                    var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);
                    alertsService.showAlertNotification(img, "История Очищена!", "", false);
                    win.setTimeout(()=> alertsService.closeAlert(), 2000);
                });
            }
        });
    })("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAO6SURBVHjafMx7UNMFHADw72AgIaNA4y4eBzrkEYzhwCWvbU4IvZ3eeSZRcpg9rjpLogIkUB4yJVQ0T/RADhE6QB5jjA2YobeNMXQwJmO8lrgNfoMZLHmeBJ7f/qj+6Hr88fn3A9KinfB/7vIZIC3aSWrJDnBryQnN67rAWeqrOLR4/3K8tvVM+E3oyg//T9KzDPjpXATc5UeQO/i7C9rPMnWSQsbIvZIYQlwYoarPDCoFWXXMP8hrYkF2OxZEhUHQmOYFolz/kL6yBOXwrQM4eJ212HMpCttOh9bWfUPdBUoB51/sAaWAAw9boqH7Wqh3c7Z/5oPSKKOhkoXaq4z1ttwQXW26f/KP6dtJIGvggKyB/TfyOyySShDrYtTu8x29zzohPkftkxd4rt3L8cLmDL/h+qxtSXe+o25qyd0BMCCJA42EBZoONmg6OTDYxYKeJu6W9nJe0kPRkYZxGc+qa4tY19dTsbvUe74mZ1uFqDjYV1oaCh0XQwAsQ0yY0UeDdYwD1nEuzE3EgFq0n3391Jc9tcU5az3NWTgq/xzNj1JxTMmdltcFl7RfpvkIztNBWEIHmBp8C6YfRYNlmA2WYS5YdHF7xxQHBPLGky+EZdl4IyMP+an5WJaWiY0XDg+Kyxmpwkt099bicGj9PvyvIAYIHct9eijuw0XzcfWG7RQ+t36BK0QKErr9qJZwsIZ/GK99+07brcK3qVX5ieSq/ESoyk/8IzBrIl1m9PHHlohPH/82n4sbtixce/oBLpl4OD+xG636cDT2M1EtipR0VYa+2VlJc1TUhUG/gA5gHmBQZkf2nVi2pBHrNv6L59YsXCGO4+rMUbQZEnB2iIazuu04PxGIBqW/orfJJ96o8HO5cnorsJmvAMw/Tq61TaZMPzN9hsvTX+Mq8TGuECm4YPoI58a5SGh80fTAA5/qA3BStaNXXPk6L++kG4UWtAkAAODZk4NzC8YjuGg8iguTybg89T4umlPQOvouzuroSGh80KwOwV8NEagUUru/SnWO8vdz2GxnRwInBwC4WuSWIawO6zIOHFpZnUp6uWR8D60jPLQO70KL1g+nBgLRNMDG5UkW3jjvK/DcCr4eW+wplM12jg5kcASyPYlMCyQzz6T7/CBt3qtViff8ohaHLRn6AtZ+7g1eH1eE4aiM/tLQE7mR/on3RQCgAMBrAOAOAK7whoejk4uzvau9HXi6uUJwQozTsYJ0r5vVV8KkwvIAVW9T0JN+SaStopjayWK6JAHAqwDg+mfk/PsAyoD+AIOtnjYAAAAASUVORK5CYII=");
} catch(e) {}


Вариант удаления куков ПКМ на предыдущей странице вызывает окно, требующее подтверждения. Это защита от себя самого, заставляет второй раз подумать, прежде чем... И мне это нравится.
https://imgsh.net/i/6daa8587e7
Как я понимаю, реализовать клик ПКМ на #identity-box с удалением без вопросов труда составить не должно, алгоритм выше есть. А вопрос можно добавить отдельным кодом. До появления скрипта восстановления удалённой закладки, Dumby делал скрипт, который спрашивал "Удалить закладку/папку?". Скрипт работает, я им пользуюсь до сих пор.
UndoBookmarksContextMenu_ask_question.js

Выделить код

Код:

(async repl => {
  var obj = `{\n  ${
    (await (await fetch("chrome://browser/content/places/controller.js")).text())
      .match(/async _removeRange\(.+?\n\ +}(?=,\n)/s)[0]
      .replace("// This is a common bookmark item.", repl)
  }\n}`
  var ps = await ChromeUtils.compileScript("data:,(" + encodeURIComponent(`${obj => {
    var patch = async ctor => {
      var proto = ctor.prototype, meth = proto?._removeRange;
      meth && Object.assign(proto, obj);
    }
    var key = "PlacesController";
    var desc = Object.getOwnPropertyDescriptor(window, key);
    if (!desc) return;

    var {get} = desc;
    if (get)
      desc.get = () => {
        var val = get();
        patch(val);
        return val;
      },
      Object.defineProperty(window, key, desc);
    else
      patch(desc.value);
  }})(${obj});`));

  var obs = doc => "PlacesController" in doc.ownerGlobal && ps.executeInGlobal(doc);
  for(var {document: d} of Services.wm.getEnumerator(null)) d?.readyState == "complete" && obs(d);
  var topic = "chrome-document-loaded";
  Services.obs.addObserver(obs, topic);
  Services.obs.addObserver(function quit(s, t) {
    Services.obs.removeObserver(quit, t);
    Services.obs.removeObserver(obs, topic);
  }, "quit-application-granted");
})(
    `$&
        if (!removedFolders.ignore) {
/*
          let info = await PlacesUtils.bookmarks.fetch(node.bookmarkGuid);
*/
          let args = [node.bookmarkGuid];
          let isBookmark = PlacesUtils.nodeIsBookmark(node);

          isBookmark && args.push(null, {includePath: true});
          let info = await PlacesUtils.bookmarks.fetch(...args);
          if (isBookmark) info.parentGuid = info.path[0].guid;
          if (
            info?.parentGuid == "${PlacesUtils.bookmarks.toolbarGuid}" &&
            !(removedFolders.ignore ??= Services.prompt.confirm(
              null, null, "Удалить закладку/папку?"
            ))
          ) {
            totalItems--;
            continue;
          }
        }`
);


Т.е. идея такая. Раз реализовать удаление, вызывающее окно подтверждения сложно, попробовать сделать скрипт по ПКМ на #identity-box. Который вызовет окно, как в кнопке выше и если ответ "да", удалит всё без вопросов. Как вы понимаете, сделать подобное мне не под силу.
P.S. Не уверен, что это кому-то интересно, кроме меня.:|
P.P.S. Пока включил вариант Farby с дебаггером.

Отредактировано xrun1 (29-05-2025 17:23:47)

Отсутствует

 

№212829-05-2025 17:57:30

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1873
UA: Firefox 140.0

Re: UCF - ваши кнопки, скрипты…

xrun1
Так это в самом браузере уже реализовано - лкм по замку или иконке в адресной строке, а там пункт "Удалить куки и данные сайта...", а если пункта нет, то и удалять нечего. Но можно использовать стиль выше и пункт будет отображаться всегда, и работать он будет так же как скрипт, т.е. всегда запускать процесс удаления с окном подтверждения, даже когда удалять нечего. Но есть и разница, со стилем ты будешь знать, что занимаешься фигней, а со скриптом нет.

Отсутствует

 

№212929-05-2025 20:13:53

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1873
UA: Firefox 140.0

Re: UCF - ваши кнопки, скрипты…

Новая версия ucf. Завезли индикацию несоответствий подключений и немного справочной информации.

Отсутствует

 

№213029-05-2025 20:57:28

Farby
Участник
 
Группа: Members
Зарегистрирован: 21-11-2012
Сообщений: 341
UA: Google 2.1

Re: UCF - ваши кнопки, скрипты…

dinn пишет

2 А как третий путь нельзя рассмотреть?

в кодике не хватает

alert
alert("All Coockies and data on site: " + gIdentityHandler._uri.host + " deleted!!!")

ну если кнопкой не попал тогда опа...


Жизнь иногда такое выкидывает, что хочется подобрать...

Отсутствует

 

№213129-05-2025 22:48:19

Farby
Участник
 
Группа: Members
Зарегистрирован: 21-11-2012
Сообщений: 341
UA: Google 2.1

Re: UCF - ваши кнопки, скрипты…

С такой кнопкой ставить нельзя не то что тестировать...
У меня вопрос, вы  решение предлагаете или подвох?


Жизнь иногда такое выкидывает, что хочется подобрать...

Отсутствует

 

№2132Вчера 00:08:12

dinn
Участник
 
Группа: Members
Зарегистрирован: 28-09-2024
Сообщений: 104
UA: Firefox 138.0

Re: UCF - ваши кнопки, скрипты…

_zt пишет

Но есть и разница, со стилем ты будешь знать, что занимаешься фигней, а со скриптом нет.

Я не буду. Никогда у себя не видел пункта "Clear Site Data". И в настройках везде пишет, что удалять нечего, нули на всем, однако есть чего. Ну я про приватный режим. Конкретно у меня скрипт удаляет некоторую часть закешированных данных в памяти, а большего не нужно.
На счет видимости пункта стилем, так это надо целых 3 клика делать для очистки, а моя цель - 1 клик

Farby
с какой кнопкой? Я привел только ключевую часть. До ключевой части можно делать проверку, что это не страница about:, file: или data:, а перед удалением вызывать окно подтверждения.
А скрипт с eval для такой короткой функции здесь чисто для вые.... или показать как можно на лету вырезать ненужную часть, отвязать от объекта и выполнить

В консоли для сравнения (построчно + Enter):

скрытый текст

Выделить код

Код:

gIdentityHandler.clearSiteData + ""
let mod = eval(`(${gIdentityHandler.clearSiteData})`.replace(/^\((async\s)?.*?clearSiteData/, "($1function clearSiteData").replace(/this\s*\./g, "gIdentityHandler.").replace(/(?:let\s*hidden\s*=\s*new\s*Promise\s*\([\S\s]+await\s*hidden\s*;|PanelMultiView\.hidePopup.+?;|event\.stopPropagation.+?;)/g, ""))
mod + ""

Отсутствует

 

№2133Вчера 10:56:54

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1873
UA: Firefox 140.0

Re: UCF - ваши кнопки, скрипты…

dinn пишет

Request to access cookie or storage on “<URL>” was blocked because we are blocking all storage access requests
т.е. нет пункта Clear Site Data?

Со второго раза понял. Ну так приватный режим это обманка, вместо усиления приватности у вас просто отнимают все инструменты контроля и управления данными, в том числе возможность очистки, а больше в этом режиме и нет ничего. Зачем вы его используете? У вас наверное и safe browsing еще включен? :)
Privatebrowsing - это не про приватность, это про палки себе же в колеса, clearOnShutdown - вот это про приватность, и его по необходимости на лету отключить можно, если вдруг требуется начать следующую сессию с этого же места.
   
Приватный просмотр | Справка Firefox
   
clearOnShutdown +
user_pref("browser.cache.disk.enable", false);
user_pref("browser.cache.memory.enable", true);
Вот и весь ваш Privatebrowsing.
Можно еще в политики добавить
DisablePasswordReveal
А если внешний менеджер, то вообще
PasswordManagerEnabled

Отредактировано _zt (Вчера 11:39:34)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]