Don't inject style elements using innerHTML as they will go away in IE. Fixes #5977.
authorjeresig <jeresig@gmail.com>
Sat, 13 Feb 2010 08:30:45 +0000 (03:30 -0500)
committerjeresig <jeresig@gmail.com>
Sat, 13 Feb 2010 08:30:45 +0000 (03:30 -0500)
src/manipulation.js
test/unit/manipulation.js

index a10feae..a58e52b 100644 (file)
@@ -5,7 +5,7 @@ var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
        rtagName = /<([\w:]+)/,
        rtbody = /<tbody/i,
        rhtml = /<|&#?\w+;/,
-       rnocache = /<script|<object|<embed|<option/i,
+       rnocache = /<script|<object|<embed|<option|<style/i,
        rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,  // checked="checked" or checked (html5)
        fcloseTag = function( all, front, tag ) {
                return rselfClosing.test( tag ) ?
index 81ab3e4..082c4e9 100644 (file)
@@ -866,7 +866,7 @@ test("clone() on XML nodes", function() {
 }
 
 var testHtml = function(valueObj) {
-       expect(29);
+       expect(31);
 
        jQuery.scriptorder = 0;
 
@@ -886,6 +886,11 @@ var testHtml = function(valueObj) {
        equals( jQuery("<div/>").html(valueObj("&#160;"))[0].innerHTML, "&nbsp;", "Make sure entities are passed through correctly." );
        equals( jQuery("<div/>").html(valueObj("&amp;"))[0].innerHTML, "&amp;", "Make sure entities are passed through correctly." );
 
+       jQuery("#main").html(valueObj("<style>.foobar{color:green;}</style>"));
+
+       equals( jQuery("#main").children().length, 1, "Make sure there is a child element." );
+       equals( jQuery("#main").children()[0].nodeName.toUpperCase(), "STYLE", "And that a style element was inserted." );
+
        reset();
        // using contents will get comments regular, text, and comment nodes
        var j = jQuery("#nonnodes").contents();