首页 > 语言 > JavaScript > 正文

jQuery.parseHTML() 函数详解

2024-05-06 15:03:12
字体:
来源:转载
供稿:网友

定义和用法

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

注意:

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

2. 如果没有指定context参数,或该参数为null或undefined,则默认为当前document。如果创建的DOM元素用于另一个文档,例如iframe,则应该指定该iframe的document对象。

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

语法

$.parseHTML( htmlString [, context ] [, keepScripts ] )

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

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

<div id="log">  <h3>Content:</h3></div><script>$(function () {   var $log = $( "#log" ),    str = "hello, <b>my name is</b> jQuery.",    html = $.parseHTML( str ),    nodeNames = [];  //添加已解析的HTML  $log.append( html );  //集合已解析HTML的节点名称  $.each( html, function( i, el ) {    nodeNames[i] = "<li>" + el.nodeName + "</li>";  });  // 插入节点名  $log.append( "<h3>Node Names:</h3>" );  $( "<ol></ol>" )    .append( nodeNames.join( "" ) )    .appendTo( $log );})</script>

示例&说明

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

// "<//script>"必须通过/将/转义,否则JS会认为已经到了脚本结束的位置var html = 'Hello,<b>CodePlayer</b><script type="text/javascript">alert("执行脚本代码");<//script>';var doms = $.parseHTML( html );// 不会执行脚本代码$("#n1").append(doms);alert("分割线");doms = $.parseHTML( html, true );// 会执行脚本代码$("#n1").append(doms);

返回值

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选