Skip to content

Instantly share code, notes, and snippets.

@QuestionDevelopment
Created August 23, 2013 19:57
Show Gist options
  • Save QuestionDevelopment/6323342 to your computer and use it in GitHub Desktop.
Save QuestionDevelopment/6323342 to your computer and use it in GitHub Desktop.
function getCSSRule(ruleName, deleteFlag) { // Return requested style obejct
ruleName=ruleName.toLowerCase(); // Convert test string to lower case.
if (document.styleSheets) { // If browser can play with stylesheets
for (var i=0; i<document.styleSheets.length; i ) { // For each stylesheet
var styleSheet=document.styleSheets[i]; // Get the current Stylesheet
var ii=0; // Initialize subCounter.
var cssRule=false; // Initialize cssRule.
do { // For each rule in stylesheet
if (styleSheet.cssRules) { // Browser uses cssRules?
cssRule = styleSheet.cssRules[ii]; // Yes --Mozilla Style
} else { // Browser usses rules?
cssRule = styleSheet.rules[ii]; // Yes IE style.
} // End IE check.
if (cssRule) { // If we found a rule...
if (cssRule.selectorText.toLowerCase()==ruleName) { // match ruleName?
if (deleteFlag=='delete') { // Yes. Are we deleteing?
if (styleSheet.cssRules) { // Yes, deleting...
styleSheet.deleteRule(ii); // Delete rule, Moz Style
} else { // Still deleting.
styleSheet.removeRule(ii); // Delete rule IE style.
} // End IE check.
return true; // return true, class deleted.
} else { // found and not deleting.
return cssRule; // return the style object.
} // End delete Check
} // End found rule name
} // end found cssRule
ii ; // Increment sub-counter
} while (cssRule) // end While loop
} // end For loop
} // end styleSheet ability check
return false; // we found NOTHING!
} // end getCSSRule
function killCSSRule(ruleName) { // Delete a CSS rule
return getCSSRule(ruleName,'delete'); // just call getCSSRule w/delete flag.
} // end killCSSRule
function addCSSRule(ruleName) { // Create a new css rule
if (document.styleSheets) { // Can browser do styleSheets?
if (!getCSSRule(ruleName)) { // if rule doesn't exist...
if (document.styleSheets[0].addRule) { // Browser is IE?
document.styleSheets[0].addRule(ruleName, null,0); // Yes, add IE style
} else { // Browser is IE?
document.styleSheets[0].insertRule(ruleName ' { }', 0); // Yes, add Moz style.
} // End browser check
} // End already exist check.
} // End browser ability check.
return getCSSRule(ruleName); // return rule we just created.
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment