Project

General

Profile

Bug #2763 ยป getCssRule.js

Marco Kinski, 03/06/2014 06:12 PM

 
// slightly modified, based on: http://www.hunlock.com/blogs/Totally_Pwn_CSS_with_Javascript
this.getCssRule = function(selector, deleteFlag) {
// selector = selector.toLowerCase(); // only used from within Wt, so case is allways exact matching
deleteFlag = deleteFlag == 'delete';

if (document.styleSheets) {
for (var i = 0; i < document.styleSheets.length; i++) {
var styleSheet = document.styleSheets[i];

try {
var rules = styleSheet.cssRules;
if (!rules) rules = styleSheet.rules;

// the items we are looking for are mostly at the ende of the stylesheet
for (var ii = rules.length -1; ii > -1; ii--) {
var rule = rules[ii];
if (rule && rule.selectorText) {
// if (rule.selectorText.toLowerCase() == selector) { // only used from within Wt, so case is allways exact matching
if (rule.selectorText == selector) {
if (deleteFlag) {
if (styleSheet.deleteRule) styleSheet.deleteRule(ii);
else styleSheet.removeRule(ii);
return true;
}
return rule;
}
}
}
}
catch (err) {
// firefox security error 1000 when access a stylesheet.cssRules hosted
// from another domain
}
}
}

return false;
};
    (1-1/1)