sss.loadAndRegisterSheet(UriPath, sss.USER_SHEET);
О-о, с этой функцией (и несколькими другими ей подобными) есть одна интересная проблема, над которой я совсем недавно бился, но так ответа и не нашёл.
Для файлов .css важен порядок, в котором они загружаются.
А у каждого окна Chrome есть свойство styleSheets - массив, в котором находятся все используемые стили, причём именно в порядке их загрузки в документ.
Но внезапно оказалось, что в этом массиве находятся только те стили, которые браузер встретил при разборе исходников документа. А те, которые загружены этой функцией, в массив не попадают. А ведь после такой программной загрузки стиля могут быть добавлены и какие-то другие, но уже способом, который их в массив занесёт. И моментально становится важным - где же в "очереди на применение" стоят те, которых в массиве нет.
Программно определять, что интересующий меня "невидимый" стиль в документ загружен, я научился, но вопрос об очерёдности так и остался открытым.
(В той моей ситуации я выкрутился с помощью конструкций вида:
document.lastChild.before(document.createProcessingInstruction( "xml-stylesheet", 'href="' + css + '"' ));
- после них .css-ы в массив попадали, причём именно в том порядке, в котором я их указывал.)
Отредактировано yup (Вчера 21:51:43)
Отсутствует
Я в chrome_debugger_profile никаких новых стилей не жду.
Это может оказаться неосмотрительным. То, что выглядит как единое окно отладчика (в смысле - Инструменты разработки и Инструменты браузера), на самом деле - куча отдельных компонентов, это можно легко увидеть с помощью самого этого отладчика. Каждый из этих компонентов загружается из своего собственного файла при первом переходе на соответствующую вкладку, и этот файл вполне может тянуть за собой какие-то стилевые файлы. (На предмет этого я отладчик не изучал.)
Вот и получается, что сначала будут загружены стили из userChrome (или те, которые скрипт назначит) и только после них те, которые вкладка с собой притащила. А у последних, как известно, приоритет перед всеми предыдущими.
(Там ещё, конечно, идёт градация по AUTHOR_SHEET, AGENT_SHEET, USER_SHEET, но смотреть, в какую категорию попадают стили из userChrome, у меня как-то повода никогда не было.)
Отредактировано yup (Сегодня 04:17:06)
Отсутствует
yup
Вроде как AGENT_SHEET должен быть. Но как видим у меня с ним проблемы. У меня стили это:
1. цвета заголовков правил, а то когда портянки мотаешь часто пролистываешь,
2. цвет scrollbar-ов, как в основном окне,
3. размер, прозрачность, цвета и значки в меню, как в основном окне,
4. прозрачность и цвета тултипов, как в основном окне.
Так что я думаю "Вы кладете это на немного толстого".
Отредактировано _zt (Сегодня 18:22:50)
Отсутствует
Вроде как AGENT_SHEET должен быть
Где-то здесь на форуме Dumby писал, что стили из userChrome.css проходят как USER_SHEET.
Впрочем, сейчас это не сильно важно - ведь при втором открытии окна стили применяются.
Для окон Инструменты разработки и Инструменты браузера используются одни и те же файлы - и .xhtml, и .css. Поэтому интересно, наблюдается ли та же проблема с окном Инструменты разработки.
Добавлено Сегодня 18:49:28
И ещё: у меня, конечно, версия Firefox другая, но есть к ней серьёзнейшие претензии именно по части Инструментов: то в дереве DOM не показывает элемент, который вот он, перед глазами, то в Отладчике не показывает скрипты, используемые документом. Я уже вычислил, что самый надёжный способ увидеть скрипты это перейти на вкладку Консоль, закрыть окно Инструментов, открыть его заново (при этом Консоль будет текущей) и только потом перейти в Отладчик. Хотя казалось бы - какая разница?
Отредактировано yup (Сегодня 18:52:04)
Отсутствует
Поэтому интересно, наблюдается ли та же проблема с окном Инструменты разработки.
Конечно нет, там стили из ucf работают. А здесь отдельный файл с @-moz-document url-prefix("chrome://devtools") {
И те стили сюда не подключить, так как в тех внешние файлы иконок и переменные (т.е., --выап-ывап), которые тут не работают.
Отсутствует
стили из userChrome.css проходят как USER_SHEET
как и стили из userContent.css
_zt
проблема со стилями с первым заходом в инстр разраба будет наблюдаться в релизе 139 или лучше сразу качать 141 альфа?
Отсутствует
dinn
Мне тут подсказали, проблема в @-moz-documen, так как @-moz-document не работает нормально с AGENT_SHEET. И вот тут я не знаю что лучше, оставить @-moz-document и sss.USER_SHEET, чтобы быть уверенным, что стили никуда больше не применятся или убрать @-moz-document и вернуть 0, без всяких гарантий.
Альфы вроде нет еще 141, я отсюда качаю - https://ftp.mozilla.org/pub/firefox/nightly/latest-mozilla-central-l10n/
Бывает, при смене циферок, что в основном репозитории - https://archive.mozilla.org/pub/firefox/nightly/2025/ более свежии версии, но не сегодня.
140 вышла 250428, в день нашего с вами разговора, так что можно считать, что на 139 я этот код не гонял.
https://archive.mozilla.org/pub/firefox/nightly/2025/04/2025-04-28-21-16-01-mozilla-central/
Отредактировано _zt (Сегодня 21:25:25)
Отсутствует
В общем вот и @-moz-document можно отбросить. Скрипт работает только в chrome_debugger_profile. Напомню, тем кто весь тред не читал, это для config.js - применение внешнего файла стилей из заданного файла в profile\chrome к profile\chrome_debugger_profile, т.е. к "chrome://devtools".
(async () => { var file = Services.dirsvc.get("ProfD", Ci.nsIFile); if (file.leafName !== "chrome_debugger_profile") return; file = file.parent; file.append("chrome"); file.append("userChrome_Agent.css"); if (!file.exists() || !file.isFile()) return; Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService) .loadAndRegisterSheet(Services.io.newFileURI(file), 0); })();
Отредактировано _zt (Сегодня 23:00:36)
Отсутствует