diff --git a/lib/less/browser.js b/lib/less/browser.js index 613a22e04..fbcf40bcb 100644 --- a/lib/less/browser.js +++ b/lib/less/browser.js @@ -118,13 +118,7 @@ function createCSS(styles, sheet, lastModified) { } css.id = id; - if (css.styleSheet) { // IE - try { - css.styleSheet.cssText = styles; - } catch (e) { - throw new(Error)("Couldn't reassign styleSheet.cssText."); - } - } else { + if (!css.styleSheet) { css.appendChild(document.createTextNode(styles)); // If new contents match contents of oldCss, don't replace oldCss @@ -148,6 +142,17 @@ function createCSS(styles, sheet, lastModified) { oldCss.parentNode.removeChild(oldCss); } + // For IE. + // This needs to happen *after* the style element is added to the DOM, otherwise IE 7 and 8 may crash. + // See http://social.msdn.microsoft.com/Forums/en-US/7e081b65-878a-4c22-8e68-c10d39c2ed32/internet-explorer-crashes-appending-style-element-to-head + if (css.styleSheet) { + try { + css.styleSheet.cssText = styles; + } catch (e) { + throw new(Error)("Couldn't reassign styleSheet.cssText."); + } + } + // Don't update the local store if the file wasn't modified if (lastModified && cache) { log('saving ' + href + ' to cache.', logLevel.info);