jQuery.parseHTML()函数详解

  

<强>定义和用法

  

$ .parseHTML()函数用于将HTML字符串解析为对应的DOM节点数组。

  

<强>注意:

  

1。该函数将使用原生的DOM元素创建函数把HTML字符串转换为一个DOM元素的集合,你可以将这些DOM元素插入到文档中。

  

2。如果没有指上下文定参数,或该参数为零或未定义,则默认为当前文档。如果创建的DOM元素用于另一个文档,例如iframe,则应该指定该iframe的文档对象。

  

安全考虑:大多数jQuery API都允许HTML字符串在HTML中包含运行脚本。jQuery.parseHTML()不会运行解析的HTML中的脚本,除非你明确将参数keepScripts指定为真的。不过,大多数环境仍然可以间接地执行脚本,例如:通过属性。调用者应该避免这样做,并清理或转义诸如URL,饼干等来源的任何不受信任的输入,从而预防出现这种情况。出于未来的兼容性考虑,当参数keepScripts被省略或为假时,调用者应该不依赖任何运行脚本内容的能力。
  

  

<>强语法

  

美元。parseHTML (htmlString[背景][,keepScripts])

  

           参数   描述         htmlString   字符串类型需要解析并转为DOM节点数组的HTML字符串         上下文   元素类型指定在哪个文档中创建元素,默认为当前文档的文档         keepScripts   布尔类型指定传入的HTML字符串中是否包含脚本,默认为假            

  

<>强实例
  使用一个HTML字符串创建一个数组的Dom节点,并将它插入一个div

        & lt; div id=叭罩尽北?   & lt; h4>内容:& lt;/h4>   & lt;/div>   & lt; script>   $(函数(){   var日志=美元(“#日志”),   str="你好,& lt; b>我的名字isjQuery。”,   html=$。parseHTML (str),   节点名=[];//添加已解析的HTML   美元的日志。追加(html);//集合已解析HTML的节点名称   美元。每个(html、函数(我、el) {   节点名[我]=" & lt; li>“+ el。节点名+”& lt;/li>”;   });//插入节点名   美元的日志。追加(“& lt; h4>节点名称:& lt;/h4>”);   $ (" & lt; ol> & lt;/ol>”)   .append(节点名。加入(" "))   .appendTo(日志);   })   & lt;/script>      

<强>示例,说明

  

以下是与jQuery.parseHTML()函数相关的jQuery示例代码,以演示jQuery.parseHTML()函数的具体用法:

     //? lt; \/script>“必须通过\将/转义,否则JS会认为已经到了脚本结束的位置   var html='你好,& lt; b> CodePlayer & lt; type=" text/javascript脚本在警报(“执行脚本代码”);& lt; \/script>”;         var doms=$。parseHTML (html);//不会执行脚本代码   $ (" # n1”) .append (doms);      alert("分割线”);      延迟性肌肉酸痛=$。parseHTML (html、真实);//会执行脚本代码   $ (" # n1”) .append (doms);      

<强>返回值

  

jQuery.parseHTML()函数的返回值为数组类型,返回解析指定HTML字符串后的DOM节点数组。
  

  

jQuery。parseHTML使用原生方法将字符串转换为一个DOM节点的集合,然后可以插入到文档。这些方法渲染所有尾随或前导文本(即使只是空格)。为了防止尾随/前导空格被转换为文本节点,你可以通过将HTML字符串传递给jQuery .trim。

  

默认情况下,如果没有指定或给定零或未定义,上下文是当前的文档。如果HTML被用在另一个文档中,比如一个iframe,该帧的文件可以使用。

  

在3.0中,这种默认行为已经被改变。如果没有指定上下文,或者给定值为null或未定义,那么将使用一个新文档的。这有可能会提高安全性,因为当HTML解析时,内嵌的事件将不会执行。一旦解析的HTML注入到文档中它会执行,但是这给工具一个机会,遍历创建DOM和删除任何东西被视为不安全。这种改进并不适用于jQuery。parseHTML的内部使用,因为他们通常传递给当前文档。因此,如类似$(" #日志")。追加($ (htmlString))的声明,仍然受制于恶意代码注入。

  

<强>安全注意事项(安全注意事项)

  

大多数的jQuery的API接受的HTML字符串将运行所包含在HTML中的脚本.jQuery。parseHTML不运行HTML中解析出来的脚本,除非keepScripts参数为真的。然而,它仍然是可能在大多数环境中间接地执行脚本,例如通过& lt; img onerror>属性。调用者应该意识到这一点,并通过清理或避免任何不可信来源的输入,如URL或饼干,来防止它。为了未来的兼容性,当keepScripts为不确定的或假时,调用者不应该依赖于这个能力来运行任何脚本内容。

jQuery.parseHTML()函数详解