jQuery.parseHTML( data [, context ] [, keepScripts ] )Returns: Array
Description: Parses a string into an array of DOM nodes.
version added: 1.8jQuery.parseHTML( data [, context ] [, keepScripts ] )
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
By default, the
context is the current
document if not specified or given as
undefined. If the HTML was to be used in another document such as an iframe, that frame's document could be used.
As of 3.0 the default behavior is changed. If the
context is not specified or given as
undefined, a new
document is used. This can potentially improve security because inline events will not execute when the HTML is parsed. Once the parsed HTML is injected into a document it does execute, but this gives tools a chance to traverse the created DOM and remove anything deemed unsafe. This improvement does not apply to internal uses of
jQuery.parseHTML as they usually pass in the current
document. Therefore, a statement like
$( "#log" ).append( $( htmlString ) ) is still subject to the injection of malicious code.
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
Create an array of DOM nodes using an HTML string and insert it into a div.