Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

Сustom Buttons » Custom Buttons » 07-02-2024 19:11:25

Dumby пишет

hartumov
В контентских процессах событие "contextmenu" пасёт ContextMenuChild
resource:///actors/ContextMenuChild.jsm


При наступлении события он собирает информацию о кликнутом,
и отправляет её в родительский процесс, в ContextMenuParent
resource:///actors/ContextMenuParent.jsm


Тот вызывает window.openContextMenu(),
где информация сохраняется в nsContextMenu.contentData,
и открывается контекстное меню.


Меню имеет атрибут "onpopupshowing", где, при наступлении события,
из сохранённой информации формируется объект gContextMenu
chrome://browser/content/nsContextMenu.js


Ты хочешь всё это миновать и сразу кликнуть по пункту.
А какое именно изображение имеется в виду программно-кликающим,
видимо, должно определиться как-то телепатически.

Да любое изображение на любой веб странице, если в его контекстном меню есть пункт "Открыть изображение в новой вкладке". Хотя бы на этой странице иконка браузера там где указан UA пользователя.
И дело не только в

Сustom Buttons » Custom Buttons » 06-02-2024 19:13:42

Как программно кликнуть на пункте контекстного меню?
В меню картинки есть пункт "Открыть изображение в новой вкладке". Его id = "context-viewimage".
Если я открываю меню ПКМ, то программно кликается нормально.

Выделить код

Код:

document.getElementById('context-viewimage').click()

Но если открыть контекстное меню через

Выделить код

Код:

document.getElementById('contentAreaContextMenu').openPopup()

То вместо клика в консоли ошибка gContextMenu is null
Что надо поправить?

Поддержка пользователей » reCaptcha крашит Фаерфокс » 16-01-2024 16:17:41

Начиная с версии ФФ где то 100 наблюдается следующий косяк.
При открывании сайта, если есть проверка безопасности подключения, браузер моментально вылетает.
Это не касается случаев, когда при логине дается картинка и нужно отметить мотоциклы или лестницы. Там все нормально. А вот именно при подключении к сайту (скрин сделан в другом браузере, в Фаерфоксе до этой страницы даже не доходит, он сразу вылетает) где надо поставить галку я не робот.

kwRIO.jpg

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


Это происходит и в безопасном режиме, и с новым профилем.
Кто сталкивался с этим?

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 15-12-2022 18:26:15

sandro79 пишет
hartumov пишет

Можно с помощью css сдвинуть контекстное меню страницы на несколько пикселей вправо и вниз?

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

Выделить код

Код:

#contentAreaContextMenu {
  margin: 4px 0 0 4px !important;
}

sandro79
благодарю! :rock::rock:

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 15-12-2022 15:35:18

Можно с помощью css сдвинуть контекстное меню страницы на несколько пикселей вправо и вниз?
Т. е. чтобы меню появлялось чуть правее и чуть ниже чем по дефолту.

Поддержка пользователей » Как вернуть список часто посещаемых сайтов в адресной строке? » 10-11-2022 12:06:06

В прошлых версиях [firefox] при клике в адресной строке оттуда выпадал список часто посещаемых сайтов.
Формировал этот список сам браузер по своему усмотрению и меня это устраивало.
Сейчас кликаю на адресную строку, оттуда выпадает список предустановленных ярлыков - Ютуб, Реддит, Амазон и пр.
Если в настройках снять галку При использовании адресной строки предлагать ссылки из ярлыков, то при клике в адресной строке ничего не выпадает.


Можно как то вернуть прежнее поведение браузера?

Сustom Buttons » Custom Buttons » 02-08-2022 19:29:15

Dumby пишет

Вероятно, Streams_API просто не подходит для таких дел,
типа хорошее быстрое соединение, и вот и вываливает сразу всё что есть.
А задумано для чего-то медленного, и большого как видос, не знаю.
Тут надо сетевых людей спрашивать, тех, которые в этом понимают.

Ну бог с ним, значит не суждено. Спасибо за помощь.

Сustom Buttons » Custom Buttons » 02-08-2022 14:58:59

Dumby пишет

hartumov пишет

    просьба дать готовый код

Это при том, что с тебя вообще ни одной строчки кода.

А какой с меня может быть код? Обычный Fetch и дальше с помощью match получаю нужный кусок кода.

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

Выделить код

Код:

fetch(url)
 .then( async (response) => {
      let html = await response.text().match(/foo/)[0]; 
})

Dumby пишет

Ну, вот мне about:license нарезает 73 × 4096 байт, но не всегда, почему-то.

У меня этот код совсем не нарезает. Вот я запрашиваю главную страницу этого форума и хочу получить html по зарывающий тег title включительно. Делаю
[spoiler][code]
(async () => {
  var response = await fetch("https://forum.mozilla-russia.org/index.php");
    var reader = response.body.getReader();
        var result, decoder = new TextDecoder();
        while(!(result = await reader.read()).done) {
                var bytes = result.value;
        var html = decoder.decode(bytes);
                if (html.includes("</title>")) {
            reader.cancel();
           

Сustom Buttons » Custom Buttons » 01-08-2022 22:25:12

Я с помощью Fetch получаю HTML страницы с некоего сайта. Но мне не надо всю страницу, а только небольшой фрагмент в начале кода. Я хочу не загружать весь HTML  и потом вырезать нужный мне кусок, а что бы получение ответа на нужном месте прерывалось и я получал бы то что уже загружено.


Можно это как то реализовать? Сейчас появились  Streams_API может с их помощью? Если да, то просьба дать готовый код, потому что сам я это дело не осилю.

Сustom Buttons » Custom Buttons » 05-07-2021 18:35:07

Dumby
Спасибо за код для экпорта закладок!

Сustom Buttons » Custom Buttons » 04-07-2021 00:56:26

Можно сделать код для экспорта закладок в формате HTML в назначенную папку без запроса?

Обсуждение расширений » uBlock » 23-03-2021 23:38:04

zzzephire пишет

Отдельно нужные шрифты разрешить нельзя, но можешь разрешить подгрузку шрифтов в нужных доменах

Нет, ну это не годится. Тогда надо на всех доменах разрешать. Потому что эти иконочные шрифты повсеместно  используются.

Обсуждение расширений » uBlock » 23-03-2021 19:55:11

Может кто в курсе.
Я запретил в uBlock  Origin загрузку удаленных шрифтов. Чтоб быстрее грузились страницы.
И оно бы ничего, браузер находит замену из системных шрифтов. Но есть два шрифта - Material Icons и еще какой то иконочный, для которых замена не находится и я вижу вместо символов прямоугольные шпалы.


Мой вопрос: можно разрешить отдельно эти два шрифта? Шрифты в uBlock  Origin блокируются как то по особому и исключение с @@  не работает.

Сustom Buttons » Custom Buttons » 21-03-2021 21:22:48

Dumby пишет
hartumov пишет

В консоли две ошибки

Ого! Не думал что такое (пока) встречается "в дикой природе".
Значит CB установлен на релиз или бету вылеченную не через config.js,
либо на билд изначально не нуждающийся в лечении (DE, Unbraindead, ...)
и без config.js как такового.

Да, я ставил CB через правку omni.ja

Если MDN-страница eval недостаточно запугала, то можно переключить
настройку security.allow_eval_with_system_principal

Переключил. eval заработал. Ну посмотрим как оно что будет. Спасибо за помощь! :)

Сustom Buttons » Custom Buttons » 20-03-2021 01:46:09

Dumby пишет
hartumov пишет

есть у меня нужный фрагмент my_scr в виде строки. А как сделать, чтоб этот код начал выполняться

eval? Не, никогда не слышал.

Пробовал. У меня этот eval блокируется. В консоли две ошибки:

Выделить код

Код:

eval() и eval-подобное использование других методов не разрешено
в Родительском процессе или в Системных контекстах (Использование заблокировано в
«chrome://custombuttons-context/content/button.js?windowId=Firefox&id=custombuttons-button3@init»)

и

Выделить код

Код:

Uncaught (in promise) EvalError: call to eval() blocked by CSP

И если это важно, добавлю, что у меня отключен мультипроцессорный режим.

Сustom Buttons » Custom Buttons » 19-03-2021 17:42:18

Подскажите пожалуйста. Вот есть где то в интернетах файл abcd.js. Он большой, а мне нужен оттуда маленький кусочек. Я делаю:

Выделить код

Код:

fetch (http://abcd.js )
  .then(resp => resp.text())
  .then(scr => { 
        let my_scr = scr.match(regexp)[0] // получаю нужный фрагмент из файла abcd.js, полностью он мне не нужен
    } )

Теперь есть у меня нужный фрагмент my_scr в виде строки. А как сделать, чтоб этот код начал выполняться в кнопке?

Сustom Buttons » Custom Buttons » 18-02-2021 18:42:05

Dumby
Всё получилось. Большое спасибо за помощь и разъяснения!

Сustom Buttons » Custom Buttons » 17-02-2021 22:45:03

Dumby пишет
hartumov пишет

вместо keyword я вставляю краткое имя закладки или просто веб адрес. Не происходит ничего, только в консоли пишет Promise { <state>: "pending" }

Интересно, откуда может взяться запись в консоли?
Разве что запускать, собственно, с консоли.


И что значит «или просто веб адрес»? Написано было чётко:

И вторая, можно было открыть закладку по ее ключевому слову.

При чём тут «веб адрес»? Если приведённому тобой коду, на Firefox 56,
скормить вместо keyword «просто веб адрес», то он тоже ничего не откроет.
А по краткому имени — должен открывать. Может в keyword'е опечатка.

С веб адресом это я просто оговорился.
У меня не получалось запустить этот код из кнопки, потому я попробовал с консоли.
А не получалось потому, что я вставлял краткое имя букмарклета. Букмарклет не вызывается, хотя старый код

Выделить код

Код:

loadURI(PlacesUtils.getURLAndPostDataForKeyword('keyword')[0]);

прекрасно с этим справлялся.

А если закладка  с обычным адре

Сustom Buttons » Custom Buttons » 17-02-2021 20:13:26

Dumby пишет
hartumov пишет

Есть сейчас замена этим двум фичам?

Первая, как-то так, наверно.
Плюс, приглядывать за багами, типа такого.
[spoiler][code]OpenBrowserWindow().addEventListener("XULFrameLoaderCreated", {
    async handleEvent(e) {
        if (!e.target.matches("[id^=panel-].browserSidebarContainer :scope"))
            return;
        await Promise.resolve();
        var func = type => {
            var restrict = () => {
                destroy();
                docShell.allowImages = docShell.allowJavascript
                    = docShell.allowPlugins = false;
            }
            var destroy = () => {
                removeEventListener(type, restrict);
                removeEventListener("unload", destroy);
            }
            addEventListener(type, restrict);
            addEventListener("unload", destroy);
        }
        var url = "data:charset=utf-8," + encodeURIComponent(
            `(${func})("DOMDocElementInserted");`
        );
        var {type} = e, stack = e.target.parentNode;

        var unload = () => {
            stack.removeEventListener(type, this);
            tab.r

Сustom Buttons » Custom Buttons » 16-02-2021 15:54:32

Раньше в СВ были две удобные фичи. Первая: можно было открыть окно и запретить в нем загрузку нежелательного контента.

Выделить код

Код:

let win = open('','',param);
docShell = win.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIWebNavigation).QueryInterface(Ci.nsIDocShell);
docShell.allowImages = false;
docShell.allowJavascript = false;
docShell.allowPlugins = false;

И вторая, можно было открыть закладку по ее ключевому слову.

Выделить код

Код:

loadURI(PlacesUtils.getURLAndPostDataForKeyword('keyword')[0]);

Есть сейчас замена этим двум фичам?

Сustom Buttons » Custom Buttons » 12-10-2020 14:52:21

mokujin пишет

hartumov то что ты описал, делают почти все баннерные\рекламные сетки. Они ставят обработчики на странице, открывают что ИМ нужно, кудаб ты\я (юзер) не жмакнул. открывают окна\вкладки, подменяют их порядок\расположение... всё это т.н. "вредоносные действия",  а по-простому - мудачилово.
Сходи на любой проно-сайт, отключи рекламорезку и посмотри как это они делают. Твои побуждения и мотивы могут быть самыми светлыми, но это никак не меняет инструментов которые тебе понадобятся. убивают не пули\пистолеты, а люди.

Я собирался открывать окно c подкорректированным кодом не на сайте (которого у меня нет), а у СЕБЯ в браузере.
Гугл уже подсказал мне, что это можно сделать двумя способами:
window.document.write() или window.document.body.innerHTML

Вот и вся премудрость.

Сustom Buttons » Custom Buttons » 10-10-2020 04:15:51

mokujin пишет
hartumov пишет

Из HTML кода я вырезаю все что мне не нужно.
А как теперь открыть окно с этим моим HTML кодом?
Мне нужно вставить свои и body, и head со всеми скриптами и стилями.

Эдакий ты наглец-баловник, хм. Яб тебе сноги засадил; так, нецелясь; куда_прилетит.... не особо_выбирая место_приложения_силы.
Есть ещё соратники в вышеобозначенном деянии?  Мамкин вырезатель, окнооткрыватель.... :|

Да понятно что ты Рэмбо сноги засадитель и все вокруг дрожат от ужаса.

Но только я не понял в чем криминал моего деяния. Ну забита страница не нужным мне хламом. Я оставил на ней то, что мне нужно и хочу открыть ее в таком виде.
И что? Кому от этого плохо, какие законы я нарушил или кому я доставил этим неприятности?
Я правда не в курсе.

Сustom Buttons » Custom Buttons » 10-10-2020 02:07:10

Подскажите пожалуйста.
Я делаю xmlhttprequest на определенную страницу, получаю ее исходный код. Из HTML кода я вырезаю все что мне не нужно.

А как теперь открыть окно с этим моим HTML кодом?
Мне нужно вставить свои и body, и head со всеми скриптами и стилями.

Поддержка пользователей » При загрузке страницы стили грузятся дважды » 03-07-2020 11:44:04

На некоторых веб страницах если открыть панель разработчика на вкладке "Сеть", можно увидеть следующее. Файлы css, ссылки на которые прописаны в Head страницы, загружены по два, а бывает и по три раза. Иногда бывает что и js скрипты загружаются дважды. Причем не подряд, первый раз стиль может загрузиться в начале, а второй раз уже в самом конце загрузки страницы.

Ещё на некоторых страницах при загрузке бывает, что начинает отрисовываться содержимое, потом на долю секунды всё пропадает и уже во второй раз страница грузится нормально.

С чем  это все связано?

Поддержка пользователей » Как подключить флэш плагин без установки в систему » 24-06-2018 12:53:39

Спасибо парни за ссылки! Установил я себе этот PlayFlash, вроде работает.

Крошка Ру пишет

А у меня стоит ФФ 32-битная версия ((((

hartumov,Я в юзерагенте вижу Win64 - вот и дал на неё ссылку :)

Честно сказать, я запутался. Я думал, Win64 в юзерагенте - это разрядность ОС, а браузер может быть и 32 бита. Зависит от того, какой пожелал себе установить. Тем более, у меня портабельная версия и я сейчас уже не могу сказать, какую версию себе скачивал.

А как узнать разрядность именно браузера, где это прописано или где это можно проверить?

Board footer

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