// script author: Griever http://d.hatena.ne.jp/Griever/
// Кнопка перезагружает файлы (userChrome | userContent).css прям сразу. без перезагрузки бравзера
// Шобы работало в версиях FF 24+ и PaleMoon 25+ в начало файлов нужно вставить строку: root{};
// */ Initialization */
this.onclick = function(e) {
switch (e.button) {
case 0:
reloadUserChromeCSS();
break;
case 1:
gShowPopup(this); // custombuttons.editButton(this);
break;
case 2:
if ( e.ctrlKey || e.shiftKey ) {
this.oncontextmenu = function() { return true; }
return;
}
this.oncontextmenu = function() { return false; }
reloadUserContentCSS();
self.checked = true;
setTimeout(()=> self.checked = false, 450);
break;
}
};
this.tooltipText = "ЛКМ - перезагрузить userChrome.css\n\
ПКМ - перезагрузить userContent.css\n\
-------------------------------------------------------\n\
СКМ - редактировать кнопку";
(function(){
// "use strict";
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;
}
})();
все было прекрасно и замечательно, больше года пользовался. Но вот недавно я узнал за переменные в CSS и - не хочет эта кнопка с переменными управляться. Выдает ошибку:
Вот в этом и вопрос : при перезапуске бравзера все загружается как надо, переменная грузится и фон применяется. А кнопкой нет.
Подскажите кто знает что поправить в кнопке.