function(cssText, attributes, extraOptions) {
        extraOptions = extraOptions || {};

        var style = document.createElement('style');
        style.type = 'text/css';

        for (var key in attributes) {
            if ( ! attributes.hasOwnProperty(key)) {
                continue;
            }
            var value = attributes[key];
            style.setAttribute('data-' + key, value);
        }

        if (style.sheet) { // for jsdom and IE9+
            style.innerHTML = cssText;
            style.sheet.cssText = cssText;
            insertStyleElement(style, { insertAt: extraOptions.insertAt });
        } else if (style.styleSheet) { // for IE8 and below
            insertStyleElement(style, { insertAt: extraOptions.insertAt });
            style.styleSheet.cssText = cssText;
        } else { // for Chrome, Firefox, and Safari
            style.appendChild(document.createTextNode(cssText));
            insertStyleElement(style, { insertAt: extraOptions.insertAt });
        }
    }
function(cssText, attributes, extraOptions) {
        extraOptions = extraOptions || {};

        var style = document.createElement('style');
        style.type = 'text/css';

        for (var key in attributes) {
            if ( ! attributes.hasOwnProperty(key)) {
                continue;
            }
            var value = attributes[key];
            style.setAttribute('data-' + key, value);
        }

        if (style.sheet) { 
            style.innerHTML = cssText;
            style.sheet.cssText = cssText;
            insertStyleElement(style, { insertAt: extraOptions.insertAt });
        } else if (style.styleSheet) { 
            insertStyleElement(style, { insertAt: extraOptions.insertAt });
            style.styleSheet.cssText = cssText;
        } else { 
            style.appendChild(document.createTextNode(cssText));
            insertStyleElement(style, { insertAt: extraOptions.insertAt });
        }
    }
function ( cssText , attributes , extraOptions ) { extraOptions = extraOptions || { } ; var style = document . createElement ( 'style' ) ; style . type = 'text/css' ; for ( var key in attributes ) { if ( ! attributes . hasOwnProperty ( key ) ) { continue ; } var value = attributes [ key ] ; style . setAttribute ( 'data-' + key , value ) ; } if ( style . sheet ) { // for jsdom and IE9+ style . innerHTML = cssText ; style . sheet . cssText = cssText ; insertStyleElement ( style , { insertAt : extraOptions . insertAt } ) ; } else if ( style . styleSheet ) { // for IE8 and below insertStyleElement ( style , { insertAt : extraOptions . insertAt } ) ; style . styleSheet . cssText = cssText ; } else { // for Chrome, Firefox, and Safari style . appendChild ( document . createTextNode ( cssText ) ) ; insertStyleElement ( style , { insertAt : extraOptions . insertAt } ) ; } }
Create a <style> tag with optional data attributes
Create a <style > tag with optional data attributes