>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >CSS-стили http://forum.mozilla-russia.org/viewforum.php?id=38 >Перегрузить userContent.css http://forum.mozilla-russia.org/viewtopic.php?id=62954 |
HaGEN > 20-04-2014 18:35:38 |
Как можно перегрузить вручную/кнопкой/~другим способом правила в файле userContent.css !без перезапуска браузера! |
HaGEN > 02-04-2015 13:48:45 |
Нашел! Скрипт чуть переведенный с японского Выделить код Код:// ==UserScript== // @name reload_userChrome_and_userContent.uc.js // @description ┐(´ー`)┌ // @namespace http://d.hatena.ne.jp/Griever/ // @author Griever // @license MIT License // @compatibility Firefox 17 // @charset UTF-8 // @include main // @version 0.0.1 // ==/UserScript== /* Скрипт создаст в меню Инструменты пункты "Перегрузить userChrome/userContent.css " Дает возомжность перезагрузить правила в этих файлах без перезапуска бравзера. Урачтоле! */ (function(){ "use strict"; var ins = document.getElementById("browserToolsSeparator"); var m = document.createElement("menuitem"); m.setAttribute("id", "reload_userchrome_css"); m.setAttribute("label", "Перегрузить userChrome.css"); m.setAttribute("oncommand", "reloadUserChromeCSS();"); ins.parentNode.insertBefore(m, ins); var m = document.createElement("menuitem"); m.setAttribute("id", "reload_usercontent_css"); m.setAttribute("label", "Перегрузить userContent.css"); m.setAttribute("oncommand", "reloadUserContentCSS();"); ins.parentNode.insertBefore(m, ins); var inIDOMUtils = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils); window.reloadUserChromeCSS = function() { var aFile = Services.dirsvc.get("UChrm", Ci.nsILocalFile); aFile.appendRelativePath("userChrome.css"); var fileURL = Services.io.getProtocolHandler("file") .QueryInterface(Ci.nsIFileProtocolHandler) .getURLSpecFromFile(aFile); var rule = getStyleSheet(document.documentElement, fileURL); if (!rule) return; inIDOMUtils.parseStyleSheet(rule, loadText(aFile)); rule.insertRule(":root{}", rule.cssRules.length);// おまじない // ウインドウを一度背面にする必要がある alert("Правила userChrome.css перезагружены"); }; window.reloadUserContentCSS = function() { var aFile = Services.dirsvc.get("UChrm", Ci.nsILocalFile); aFile.appendRelativePath("userContent.css"); var fileURL = Services.io.getProtocolHandler("file") .QueryInterface(Ci.nsIFileProtocolHandler) .getURLSpecFromFile(aFile); var rule = getStyleSheet(content.document.documentElement, fileURL); if (!rule) return; inIDOMUtils.parseStyleSheet(rule, loadText(aFile)); rule.insertRule(":root{}", rule.cssRules.length);// おまじない // 再描画処理 var s = gBrowser.markupDocumentViewer; s.authorStyleDisabled = !s.authorStyleDisabled; s.authorStyleDisabled = !s.authorStyleDisabled; }; function getStyleSheet(aElement, cssURL) { var rules = inIDOMUtils.getCSSStyleRules(aElement); var count = rules.Count(); if (!count) return null; for (var i = 0; i < count; ++i) { var rule = rules.GetElementAt(i).parentStyleSheet; if (rule && rule.href === cssURL) return rule; }; return null; } function loadText(aFile) { if (!aFile.exists() || !aFile.isFile()) return null; var fstream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream); var sstream = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream); fstream.init(aFile, -1, 0, 0); sstream.init(fstream); var data = sstream.read(sstream.available()); try { data = decodeURIComponent(escape(data)); } catch(e) {} sstream.close(); fstream.close(); return data; } })(); Кладём код в кнопку CB в Инициализацию и вуаля! Автор сего волшебного кода Griever Страничка афтара на японском Так же благодарность тов. SendInfo за его наводку на плугин UC. полез искать для него скрипты и вот нашел на гитхабе тут Всё работает в моём PaleMoon 23. |
villa7 > 02-04-2015 14:09:15 |
HaGEN |
HaGEN > 02-04-2015 14:40:43 |
хехе, щас попробовал в FF 33. тоже не работает. Видать связано с Автралисом ибо ежели заменить в коде: на ... то появляются пункты в меню Инструменты, но ничче не делают. яхз. надобно гуру просить шобы поглядели в чем тут дело |
turbot > 02-04-2015 17:01:06 |
Достаточно убрать строку и все работает (понятия не имею, что это). |
HaGEN > 02-04-2015 18:36:50 |
okkamas_knife пишет
ЭхЪ ябы только за, но онож не желает в секции кода работать поцчемуто. Только в Инициализации - тогда работает и можно с секцию кода вставить две (или одну) комманды ... и по клику можно перегружать файлы, шобы не лазать в менюшки. А так, чисто из code у мну ничего не происходит. Вообще это именно и хотелось бы, шобы только в code, но так тоже норм. 02-04-2015 19:05:34 turbot пишет
Точна . В FF 33 перегружает userContent.css , но не перегружает userChrome.css |
ffx2014 > 02-04-2015 19:34:50 |
HaGEN |
HaGEN > 02-04-2015 20:42:02 |
Смысл как раз в обратном - убрать дополнения. тем более что бравзер всё это и так делает(загружает стили из файлов) , но не может их применить без перезапуска. Это же тупо. А с этим скриптом логика существования этих файлов приходит в норму. В своём редакторе с подсветкой и закладками удобно пишешь стили и применяешь сразу, правишь. Красота. |
villa7 > 02-04-2015 21:05:28 |
Убрал "use strict"; заменил var ins = document.getElementById("browserToolsSeparator"); |
turbot > 02-04-2015 21:49:40 |
HaGEN пишет
Действительно, поленинлся и проверил только с первым. Виноват. |
HaGEN > 02-04-2015 21:53:38 |
Вот код кнопки который работает в FF 33.1 на половину. Перегружает только "стили сайтов" userContent.css скрытый текст Выделить код Код:// ==UserScript== // @name reload_userChrome_and_userContent.uc.js // @description ┐(´ー`)┌ // @namespace http://d.hatena.ne.jp/Griever/ // @author Griever // @license MIT License // @compatibility Firefox 17 // @charset UTF-8 // @include main // @version 0.0.1 // ==/UserScript== /* Скрипт создаст в меню Инструменты пункты "Перегрузить userChrome/userContent.css " Дает возомжность перезагрузить правила в этих файлах без перезапуска бравзера. Урачтоле! */ (function(){ // "use strict"; var ins = document.getElementById("menu_openDownloads"); // var ins = document.getElementById("browserToolsSeparator"); var m = document.createElement("menuitem"); m.setAttribute("id", "reload_userchrome_css"); m.setAttribute("label", "Перегрузить userChrome.css"); m.setAttribute("oncommand", "reloadUserChromeCSS();"); ins.parentNode.insertBefore(m, ins); var m = document.createElement("menuitem"); m.setAttribute("id", "reload_usercontent_css"); m.setAttribute("label", "Перегрузить userContent.css"); m.setAttribute("oncommand", "reloadUserContentCSS();"); ins.parentNode.insertBefore(m, ins); var inIDOMUtils = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils); window.reloadUserChromeCSS = function() { var aFile = Services.dirsvc.get("UChrm", Ci.nsILocalFile); aFile.appendRelativePath("userChrome.css"); var fileURL = Services.io.getProtocolHandler("file") .QueryInterface(Ci.nsIFileProtocolHandler) .getURLSpecFromFile(aFile); var rule = getStyleSheet(document.documentElement, fileURL); if (!rule) return; inIDOMUtils.parseStyleSheet(rule, loadText(aFile)); rule.insertRule(":root{}", rule.cssRules.length);// おまじない // ウインドウを一度背面にする必要がある alert("Правила userChrome.css перезагружены"); }; window.reloadUserContentCSS = function() { var aFile = Services.dirsvc.get("UChrm", Ci.nsILocalFile); aFile.appendRelativePath("userContent.css"); var fileURL = Services.io.getProtocolHandler("file") .QueryInterface(Ci.nsIFileProtocolHandler) .getURLSpecFromFile(aFile); var rule = getStyleSheet(content.document.documentElement, fileURL); if (!rule) return; inIDOMUtils.parseStyleSheet(rule, loadText(aFile)); rule.insertRule(":root{}", rule.cssRules.length);// おまじない // 再描画処理 var s = gBrowser.markupDocumentViewer; s.authorStyleDisabled = !s.authorStyleDisabled; s.authorStyleDisabled = !s.authorStyleDisabled; alert("Правила userContent.css перезагружены"); }; function getStyleSheet(aElement, cssURL) { var rules = inIDOMUtils.getCSSStyleRules(aElement); var count = rules.Count(); if (!count) return null; for (var i = 0; i < count; ++i) { var rule = rules.GetElementAt(i).parentStyleSheet; if (rule && rule.href === cssURL) return rule; }; return null; } function loadText(aFile) { if (!aFile.exists() || !aFile.isFile()) return null; var fstream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream); var sstream = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream); fstream.init(aFile, -1, 0, 0); sstream.init(fstream); var data = sstream.read(sstream.available()); try { data = decodeURIComponent(escape(data)); } catch(e) {} sstream.close(); fstream.close(); return data; } })(); |
Dumby > 03-04-2015 10:31:52 |
Для тех, у кого не работает перезагрузка userChrome.css, Код ищет среди правил, применяемых к #main-window, такое, Но если в userChrome.css нет никаких правил для #main-window, Можно, конечно, попробовать поискать среди всех элементов во всех окнах, И, если дело было в этом, то теперь |
turbot > 03-04-2015 12:04:26 |
Работает, спасибо. |