Merge pull request #51 from diurnalist/ie-singleton-media-queries

[#39] Don't use styleSheet to store state of css text
master
Tobias Koppers 2015-04-14 17:20:51 +02:00
commit 4c0fce2278
1 changed files with 10 additions and 15 deletions

View File

@ -153,25 +153,20 @@ function addStyle(obj, options) {
}; };
} }
function replaceText(source, id, replacement) { var replaceText = (function () {
var boundaries = ["/** >>" + id + " **/", "/** " + id + "<< **/"]; var textStore = [];
var start = source.lastIndexOf(boundaries[0]);
var wrappedReplacement = replacement return function (index, replacement) {
? (boundaries[0] + replacement + boundaries[1]) textStore[index] = replacement;
: ""; return textStore.filter(Boolean).join('\n');
if (source.lastIndexOf(boundaries[0]) >= 0) { };
var end = source.lastIndexOf(boundaries[1]) + boundaries[1].length; })();
return source.slice(0, start) + wrappedReplacement + source.slice(end);
} else {
return source + wrappedReplacement;
}
}
function applyToSingletonTag(styleElement, index, remove, obj) { function applyToSingletonTag(styleElement, index, remove, obj) {
var css = remove ? "" : obj.css; var css = remove ? "" : obj.css;
if (styleElement.styleSheet) { if (styleElement.styleSheet) {
styleElement.styleSheet.cssText = replaceText(styleElement.styleSheet.cssText, index, css); styleElement.styleSheet.cssText = replaceText(index, css);
} else { } else {
var cssNode = document.createTextNode(css); var cssNode = document.createTextNode(css);
var childNodes = styleElement.childNodes; var childNodes = styleElement.childNodes;