aboutsummaryrefslogtreecommitdiffstats
path: root/src/manipulation.js
diff options
context:
space:
mode:
authortimmywil <timmywillisn@gmail.com>2011-09-28 10:06:29 -0400
committertimmywil <timmywillisn@gmail.com>2011-09-28 10:06:29 -0400
commit649823de18564774a5812ae04083606447bd2b93 (patch)
tree4a27081742c119f8adddb41dfb433887dec18f45 /src/manipulation.js
parent51fd4593fc43f4c935d3226485f6864b05366621 (diff)
downloadjquery-649823de18564774a5812ae04083606447bd2b93.tar.gz
jquery-649823de18564774a5812ae04083606447bd2b93.zip
Fixes a fail in unit/traversing. Use an iframe's document for creating the html5 fragment when necessary.
Diffstat (limited to 'src/manipulation.js')
-rw-r--r--src/manipulation.js42
1 files changed, 25 insertions, 17 deletions
diff --git a/src/manipulation.js b/src/manipulation.js
index 8b0af08a9..bf0b8e10e 100644
--- a/src/manipulation.js
+++ b/src/manipulation.js
@@ -22,22 +22,7 @@ var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
area: [ 1, "<map>", "</map>" ],
_default: [ 0, "", "" ]
},
- safeFragment = (function() {
- var nodeNames = (
- "abbr article aside audio canvas datalist details figcaption figure footer " +
- "header hgroup mark meter nav output progress section summary time video"
- ).split( " " ),
- safeFrag = document.createDocumentFragment();
-
- if ( safeFrag.createElement ) {
- while ( nodeNames.length ) {
- safeFrag.createElement(
- nodeNames.pop()
- );
- }
- }
- return safeFrag;
- })();
+ safeFragment = createSafeFragment( document );
wrapMap.optgroup = wrapMap.option;
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
@@ -643,7 +628,13 @@ jQuery.extend({
div = context.createElement("div");
// Append wrapper element to unknown element safe doc fragment
- safeFragment.appendChild( div );
+ if ( context === document ) {
+ // Use the fragment we've already created for this document
+ safeFragment.appendChild( div );
+ } else {
+ // Use a fragment created with the owner document
+ createSafeFragment( context ).appendChild( div );
+ }
// Go to html and back, then peel off extra wrappers
div.innerHTML = wrap[1] + elem + wrap[2];
@@ -786,4 +777,21 @@ function evalScript( i, elem ) {
}
}
+function createSafeFragment( document ) {
+ var nodeNames = (
+ "abbr article aside audio canvas datalist details figcaption figure footer " +
+ "header hgroup mark meter nav output progress section summary time video"
+ ).split( " " ),
+ safeFrag = document.createDocumentFragment();
+
+ if ( safeFrag.createElement ) {
+ while ( nodeNames.length ) {
+ safeFrag.createElement(
+ nodeNames.pop()
+ );
+ }
+ }
+ return safeFrag;
+}
+
})( jQuery );