Xpoint
   [напомнить пароль]

StyleSheet, добавить динамически для XUL диалога

Метки: [без меток]
2007-09-18 17:35:41 [обр] KML[досье]
Например, расширение находит какой-то спец. тэг на страничке и показывает диалоговое окно. Это окно содержит GUI, сгенерённый в соответствии с содержимым этого тэга. Но GUI выглядит слишком примитивно и я подумал, что могу добавить ссылку на внешний файл CSS, чтобы любой WEB девелопер смог влиять на внешний вид моего окна. Оказалось, что подсунуть файл стилей для окна - это проблема. StyleSheetList не имеет соответствующих методов, XULDocument тоже. Можно конечно прописать каждому элементу соотв. характеристики в свойство style, но хотелось бы использовать более цивилизованный метод...
спустя 2 минуты [обр] Владимир Палант(434/4445)[досье]
сообщение промодерировано
var instr = document.createProcessingInstruction("xml-stylesheet", "href='chrome://global/skin/' type='text/css'");
document.documentElement.insertBefore(instr, document.documentElement.firstChild);
спустя 1 час 51 минуту [обр] KML[досье]
Владимир Палант[досье], или я торможу, или конструкция не работает, по крайней мере я заменил chrome://global/skin/ на URL http://.../mystyle.css и эту конструкцию в методе onload. Никаких изменений не произошло.
спустя 20 часов [обр] Владимир Палант(434/4445)[досье]
А, ну да — не там вставляет. Правильно так:
var instr = document.createProcessingInstruction("xml-stylesheet", "href='chrome://global/skin/' type='text/css'");
document.insertBefore(instr, document.firstChild);
спустя 55 минут [обр] KML[досье]
Владимир Палант[досье], странно, в документе соотв. изменения присутствуют, но на диалоговом окне это никак не отразилось. Можеть быть нужно дать какую-то команду, типа refresh или repaint?
спустя 21 час [обр] Владимир Палант(434/4445)[досье]
У меня все отображается (если добавлять именно в документ, а не в корневой элемент).
спустя 2 часа 34 минуты [обр] KML[досье]
Точно, работает, просто у меня был Grid и я задал свойство flex для каждого Column. В итоге элементы получались всегда одного и того же размера (независимо от внешнего CSS). После того как я убрал flex элементы вылезли за границы диалога. Проблема решается установкой orient="horizontal" для диалога, но диалоговые кнопки при этом изменяют свое местоположение. Прийдется указывать размеры окна в CSS.
Powered by POEM™ Engine Copyright © 2002-2005