define([
"../core",
"./var/rsingleTag",
- "../manipulation" // buildFragment
-], function( jQuery, rsingleTag ) {
+
+ // This is the only module that needs core/support
+ "./support",
+
+ // buildFragment
+ "../manipulation"
+], function( jQuery, rsingleTag, support ) {
// data: string of html
// context (optional): If specified, the fragment will be created in this context,
keepScripts = context;
context = false;
}
- context = context || document;
+ // document.implementation stops scripts or inline event handlers from
+ // being executed immediately
+ context = context || ( support.createHTMLDocument ?
+ document.implementation.createHTMLDocument( "" ) :
+ document );
var parsed = rsingleTag.exec( data ),
scripts = !keepScripts && [];
--- /dev/null
+define([
+ "../var/support"
+], function( support ) {
+
+support.createHTMLDocument = (function() {
+ if ( !document.implementation.createHTMLDocument ) {
+ return false;
+ }
+ var doc = document.implementation.createHTMLDocument( "" );
+ doc.body.innerHTML = "<form></form><form></form>";
+ return doc.body.childNodes.length === 2;
+})();
+
+return support;
+});
equal( jQuery.parseHTML("<td><td>")[ 1 ].parentNode.nodeType, 11, "parentNode should be documentFragment" );
});
+if ( jQuery.support.createHTMLDocument ) {
+ asyncTest("jQuery.parseHTML", function() {
+ expect ( 1 );
+
+ Globals.register("parseHTMLError");
+
+ jQuery.globalEval("parseHTMLError = false;");
+ jQuery.parseHTML( "<img src=x onerror='parseHTMLError = true'>" );
+
+ window.setTimeout(function() {
+ start();
+ equal( window.parseHTMLError, false, "onerror eventhandler has not been called." );
+ }, 2000);
+ });
+}
+
test("jQuery.parseJSON", function() {
expect( 20 );
"checkOn": true,
"clearCloneStyle": true,
"cors": true,
+ "createHTMLDocument": true,
"cssFloat": true,
"deleteExpando": true,
"focusinBubbles": false,
"checkOn": true,
"clearCloneStyle": false,
"cors": true,
+ "createHTMLDocument": true,
"cssFloat": true,
"deleteExpando": true,
"focusinBubbles": true,
"checkOn": true,
"clearCloneStyle": false,
"cors": false,
+ "createHTMLDocument": true,
"cssFloat": true,
"deleteExpando": true,
"focusinBubbles": true,
"checkOn": true,
"clearCloneStyle": true,
"cors": false,
+ "createHTMLDocument": false,
"cssFloat": false,
"deleteExpando": false,
"focusinBubbles": true,
"style": false,
"submitBubbles": false
};
- } else if ( /(6|7|8)\.0(\.\d+|) safari/i.test( userAgent ) ) {
+ } else if ( /(6|7)\.0(\.\d+|) safari/i.test( userAgent ) ) {
expected = {
"ajax": true,
"boxSizingReliable": true,
"checkOn": true,
"clearCloneStyle": true,
"cors": true,
+ "createHTMLDocument": true,
+ "cssFloat": true,
+ "deleteExpando": true,
+ "focusinBubbles": false,
+ "html5Clone": true,
+ "htmlSerialize": true,
+ "input": true,
+ "leadingWhitespace": true,
+ "noCloneChecked": true,
+ "noCloneEvent": true,
+ "opacity": true,
+ "optDisabled": true,
+ "optSelected": true,
+ "ownLast": false,
+ "pixelPosition": false,
+ "radioValue": true,
+ "reliableHiddenOffsets": true,
+ "reliableMarginRight": true,
+ "style": true,
+ "submitBubbles": true
+ };
+ } else if ( /8.0(\.\d+|) safari/i.test( userAgent ) ) {
+ expected = {
+ "ajax": true,
+ "boxSizingReliable": true,
+ "changeBubbles": true,
+ "checkClone": true,
+ "checkOn": true,
+ "clearCloneStyle": true,
+ "cors": true,
+ "createHTMLDocument": false,
"cssFloat": true,
"deleteExpando": true,
"focusinBubbles": false,
"checkOn": true,
"clearCloneStyle": true,
"cors": true,
+ "createHTMLDocument": true,
"cssFloat": true,
"deleteExpando": true,
"focusinBubbles": false,
"checkOn": true,
"clearCloneStyle": true,
"cors": true,
+ "createHTMLDocument": true,
"cssFloat": true,
"deleteExpando": true,
"focusinBubbles": false,
"checkOn": false,
"clearCloneStyle": true,
"cors": true,
+ "createHTMLDocument": true,
"cssFloat": true,
"deleteExpando": true,
"focusinBubbles": false,
"checkOn": false,
"clearCloneStyle": false,
"cors": true,
+ "createHTMLDocument": true,
"cssFloat": true,
"deleteExpando": true,
"focusinBubbles": false,