jquery字符串截取
jQuery.parseHTML()函数详解
定义和⽤法
$.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节点数组。
jQuery.parseHTML使⽤原⽣⽅法将字符串转换为⼀个DOM节点的集合,然后可以插⼊到⽂档。这些⽅法渲染所有尾随或前导⽂本(即使只是空格)。为了防⽌尾随/前导空格被转换为⽂本节点,你可以通过将HTML字符串传递给jQuery .trim。
默认情况下,如果没有指定或给定null 或 undefined,context是当前的document。如果HTML被⽤在另⼀个document中,⽐如⼀个iframe,该frame的⽂件可以使⽤。
在3.0中,这种默认⾏为已经被改变。如果没有指定context,或者给定值为null 或 undefined,那么将使⽤⼀个新的document。这有可能会提⾼安全性,因为当HTML解析时,内嵌的事件将不会执⾏。⼀旦解析的HTML注⼊到⽂档中它会执⾏,但是这给⼯具⼀个机会,遍历创建DOM和删除任何东西被视为不安全。这种改进并不适⽤于jQuery.parseHTML的内部使⽤,因为他们通常传递给当前⽂档。因此,如类似$( "#log" ).append( $( htmlString ) )的声明,仍然受制于恶意代码注⼊。Security Considerations(安全注意事项)
⼤多数的jQuery的API接受的HTML字符串将运⾏所包含在HTML中的脚本。jQuery.parseHTML不运⾏HTML中解析出来的脚本,除⾮ keepScripts参数为true。然⽽,它仍然是可能在⼤多数环境中间接地执⾏脚本,例如通过<img onerror>属性。调⽤者应该意识到这⼀点,并通过清理或避免任何不可信来源的输⼊,如URL或cookies,来防⽌它。为了未来的兼容性,当keepScripts为不确定的或false时,调⽤者不应该依赖于这个能⼒来运⾏任何脚本内容。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。