jQuery.parseHTML
uses native methods to convert the string to a set of DOM nodes, which can then be inserted into the document. These methods do render all trailing or leading text (even if that's just whitespace). To prevent trailing/leading whitespace from being converted to text nodes you can pass the HTML string through jQuery.trim
.
By default, the context
is the current document
if not specified or given as null
or undefined
. If the HTML was to be used in another document such as an iframe, that frame's document could be used.
Security Considerations
Most jQuery APIs that accept HTML strings will run scripts that are included in the HTML. jQuery.parseHTML
does not run scripts in the parsed HTML unless keepScripts
is explicitly true
. However, it is still possible in most environments to execute scripts indirectly, for example via the <img onerror>
attribute. The caller should be aware of this and guard against it by cleaning or escaping any untrusted inputs from sources such as the URL or cookies. For future compatibility, callers should not depend on the ability to run any script content when keepScripts
is unspecified or false
.
HTML string to be parsed
Document element to serve as the context in which the HTML fragment will be created
A Boolean indicating whether to include scripts passed in the HTML string
Create an array of DOM nodes using an HTML string and insert it into a div.
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQuery.parseHTML demo</title> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <div id="log"> <h3>Content:</h3> </div> <script> var $log = $( "#log" ), str = "hello, <b>my name is</b> jQuery.", html = $.parseHTML( str ), nodeNames = []; // Append the parsed HTML $log.append( html ); // Gather the parsed HTML's node names $.each( html, function( i, el ) { nodeNames[ i ] = "<li>" + el.nodeName + "</li>"; }); // Insert the node names $log.append( "<h3>Node Names:</h3>" ); $( "<ol></ol>" ) .append( nodeNames.join( "" ) ) .appendTo( $log ); </script> </body> </html>
Please login to continue.