diff options
author | John Resig <jeresig@gmail.com> | 2011-04-12 16:39:30 -0400 |
---|---|---|
committer | John Resig <jeresig@gmail.com> | 2011-04-12 16:39:30 -0400 |
commit | 3418f323876043db63a2da9f653e51d5458647fa (patch) | |
tree | 144b7aa0fe4e07ce63385981a68db736124e4e4a | |
parent | 122514a8da8f214dc3e7b7b17defdbff862e8748 (diff) | |
parent | df7dfc2404807dce2f97c21782eb3a14ced86d6b (diff) | |
download | jquery-3418f323876043db63a2da9f653e51d5458647fa.tar.gz jquery-3418f323876043db63a2da9f653e51d5458647fa.zip |
Merge branch 'master' of https://github.com/rjgotten/jquery into rjgotten-master. Also added in unit tests covering the case. Fixes #6180.
Conflicts:
src/manipulation.js
-rw-r--r-- | src/manipulation.js | 7 | ||||
-rw-r--r-- | test/unit/manipulation.js | 10 |
2 files changed, 14 insertions, 3 deletions
diff --git a/src/manipulation.js b/src/manipulation.js index 758cdbae0..52d59d83e 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -9,6 +9,7 @@ var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, rnocache = /<(?:script|object|embed|option|style)/i, // checked="checked" or checked rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /\/(java|ecma)script/i, wrapMap = { option: [ 1, "<select multiple='multiple'>", "</select>" ], legend: [ 1, "<fieldset>", "</fieldset>" ], @@ -635,7 +636,11 @@ jQuery.extend({ } else { if ( ret[i].nodeType === 1 ) { - ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) ); + var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), function( elem ) { + return !elem.type || rscriptType.test( elem.type ); + }); + + ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) ); } fragment.appendChild( ret[i] ); } diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js index 64265c9b5..de65daa13 100644 --- a/test/unit/manipulation.js +++ b/test/unit/manipulation.js @@ -1058,7 +1058,7 @@ test("clone() on XML nodes", function() { } var testHtml = function(valueObj) { - expect(31); + expect(34); jQuery.scriptorder = 0; @@ -1115,6 +1115,12 @@ var testHtml = function(valueObj) { jQuery("#main").html(valueObj("<script type='something/else'>ok( false, 'Non-script evaluated.' );</script><script type='text/javascript'>ok( true, 'text/javascript is evaluated.' );</script><script>ok( true, 'No type is evaluated.' );</script><div><script type='text/javascript'>ok( true, 'Inner text/javascript is evaluated.' );</script><script>ok( true, 'Inner No type is evaluated.' );</script><script type='something/else'>ok( false, 'Non-script evaluated.' );</script></div>")); + var child = jQuery("#main").find("script"); + + equals( child.length, 2, "Make sure that two non-JavaScript script tags are left." ); + equals( child[0].type, "something/else", "Verify type of script tag." ); + equals( child[1].type, "something/else", "Verify type of script tag." ); + jQuery("#main").html(valueObj("<script>ok( true, 'Test repeated injection of script.' );</script>")); jQuery("#main").html(valueObj("<script>ok( true, 'Test repeated injection of script.' );</script>")); jQuery("#main").html(valueObj("<script>ok( true, 'Test repeated injection of script.' );</script>")); @@ -1133,7 +1139,7 @@ test("html(String)", function() { test("html(Function)", function() { testHtml(functionReturningObj); - expect(33); + expect(36); QUnit.reset(); |