mirror of
https://github.com/less/less.js.git
synced 2026-04-09 03:00:20 -04:00
patch for issue 163
This commit is contained in:
@@ -321,23 +321,23 @@ function extractId(href) {
|
||||
}
|
||||
|
||||
function createCSS(styles, sheet, lastModified) {
|
||||
var css;
|
||||
|
||||
// Strip the query-string
|
||||
var href = sheet.href || '';
|
||||
|
||||
// If there is no title set, use the filename, minus the extension
|
||||
var id = 'less:' + (sheet.title || extractId(href));
|
||||
|
||||
// If the stylesheet doesn't exist, create a new node
|
||||
if ((css = document.getElementById(id)) === null) {
|
||||
css = document.createElement('style');
|
||||
css.type = 'text/css';
|
||||
if( sheet.media ){ css.media = sheet.media; }
|
||||
css.id = id;
|
||||
var nextEl = sheet && sheet.nextSibling || null;
|
||||
(nextEl || document.getElementsByTagName('head')[0]).parentNode.insertBefore(css, nextEl);
|
||||
// If this has already been inserted into the DOM, we may need to replace it
|
||||
var oldCss = document.getElementById(id);
|
||||
var keepOldCss = false;
|
||||
|
||||
// Create a new stylesheet node for insertion or (if necessary) replacement
|
||||
var css = document.createElement('style');
|
||||
css.setAttribute('type', 'text/css');
|
||||
if (sheet.media) {
|
||||
css.setAttribute('media', sheet.media);
|
||||
}
|
||||
css.id = id;
|
||||
|
||||
if (css.styleSheet) { // IE
|
||||
try {
|
||||
@@ -346,15 +346,23 @@ function createCSS(styles, sheet, lastModified) {
|
||||
throw new(Error)("Couldn't reassign styleSheet.cssText.");
|
||||
}
|
||||
} else {
|
||||
(function (node) {
|
||||
if (css.childNodes.length > 0) {
|
||||
if (css.firstChild.nodeValue !== node.nodeValue) {
|
||||
css.replaceChild(node, css.firstChild);
|
||||
}
|
||||
} else {
|
||||
css.appendChild(node);
|
||||
}
|
||||
})(document.createTextNode(styles));
|
||||
css.appendChild(document.createTextNode(styles));
|
||||
|
||||
// If new contents match contents of oldCss, don't replace oldCss
|
||||
keepOldCss = (oldCss !== null && oldCss.childNodes.length > 0 && css.childNodes.length > 0 &&
|
||||
oldCss.firstChild.nodeValue === css.firstChild.nodeValue);
|
||||
}
|
||||
|
||||
var head = document.getElementsByTagName('head')[0];
|
||||
|
||||
// If there is no oldCss, just append; otherwise, only append if we need
|
||||
// to replace oldCss with an updated stylesheet
|
||||
if (oldCss == null || keepOldCss === false) {
|
||||
var nextEl = sheet && sheet.nextSibling || null;
|
||||
(nextEl || document.getElementsByTagName('head')[0]).parentNode.insertBefore(css, nextEl);
|
||||
}
|
||||
if (oldCss && keepOldCss === false) {
|
||||
head.removeChild(oldCss);
|
||||
}
|
||||
|
||||
// Don't update the local store if the file wasn't modified
|
||||
|
||||
Reference in New Issue
Block a user