国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jQuery.parseHTML() 函數詳解

2019-11-19 18:03:03
字體:
來源:轉載
供稿:網友

定義和用法

$.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時,調用者不應該依賴于這個能力來運行任何腳本內容。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 电白县| 长岛县| 定陶县| 溧阳市| 民勤县| 永胜县| 平舆县| 海伦市| 雷州市| 广河县| 台湾省| 兴海县| 双辽市| 安仁县| 大宁县| 蒲江县| 平原县| 南皮县| 贵德县| 南汇区| 伊川县| 锡林浩特市| 凤凰县| 怀柔区| 班戈县| 城步| 临清市| 安乡县| 英德市| 阿瓦提县| 垣曲县| 车致| 黑龙江省| 肇庆市| 本溪| 郁南县| 英山县| 甘谷县| 常熟市| 靖江市| 肇州县|