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

首頁 > 語言 > JavaScript > 正文

Prototype源碼淺析 String部分(三)之HTML字符串處理

2024-05-06 14:22:35
字體:
來源:轉載
供稿:網友
HTML處理stripTags  | escapeHTML |  unescapeHTML
  
JSON處理unfilterJSON |  isJSON |  evalJSON |  parseJSON
腳本處理stripScripts |  extractScripts  | evalScripts
現在,String部分轉入具體的關聯應用,分別對應
HTML字符串,JSON字符串和HTML中的腳本字符串。
【亂入一句,有關JSON的一點東西,可以看看http://www.cnblogs.com/TomXu/archive/2012/01/11/2311956.html】
下面分別敘述:
一、HTML字符串
stripTags :移除字符串中所有的 HTML 標簽。
escapeHTML : 將 HTML 特殊字符轉換為它們的等價實體。(&對應& <對應< >對應> )
unescapeHTML :移除字符串中的標簽,并將用實體表示的 HTML 特殊字符轉換為它們的正常形式。(escapeHTML 的逆操作)
stripTags 中的一段正則/</w+(/s+("[^"]*"|'[^']*'|[^>])+)?>|<///w+>/gi用來匹配標簽中的內容,注意不能換行,不過換行的話就有語法錯誤了。
【這個方法唯一需要注意的位置是,stripTags會移除<script>標簽,但是不會移除里面的內容,所以可能將<script>里面的內容暴露出來,影響頁面結構】
二、腳本字符串
stripScripts : 移除字符串中所有的 HTML script 塊。彌補stripTags方法對script標簽的缺陷
extractScripts :提取出字符串中包含的所有 script 的內容,并將之返回作為一個字符串數組。
evalScripts :執行字符串中包含的所有 script 塊的內容。返回一個數組,該數組包含每個 script 執行后返回的值。
stripScripts中的正則是對stripTags中一個正則的發展
代碼如下:
function stripScripts() {
var pattern = new RegExp('<script[^>]*>([//S//s]*?)<//script>', 'img');//i忽略大小寫,m換行,g全局
return this.replace(pattern , '');
}

代碼如下:
function extractScripts() {
var matchAll = new RegExp('<script[^>]*>([//S//s]*?)<//script>', 'img'),
matchOne = new RegExp('<script[^>]*>([//S//s]*?)<//script>', 'im');
return (this.match(matchAll) || []).map(function(scriptTag) {
return (scriptTag.match(matchOne) || ['', ''])[1];
});
}

map是對數組的一個擴展,某些瀏覽器有這個原生方法,參見《chrome原生方法之數組》
最后獲得的是一個所有script標簽內部內容的一個數組,因此evalScripts 的做法就很自然的可以想出來——循環遍歷獲得的數組,然后依次執行(eval),存儲每一項執行的結果。
代碼如下:
function evalScripts() {
return this.extractScripts().map(function(script) { return eval(script) });
}

三、JSON處理
unfilterJSON:移除 Ajax JSON 或 JavaScript 響應內容周圍的安全注釋界定符。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 乐亭县| 正定县| 阿克| 尉犁县| 莱州市| 红安县| 长沙县| 安阳市| 社会| 朝阳县| 南阳市| 昭通市| 怀仁县| 龙泉市| 松溪县| 治县。| 项城市| 潜江市| 商丘市| 十堰市| 巴青县| 南澳县| 皮山县| 聊城市| 赤峰市| 许昌县| 上虞市| 奇台县| 余姚市| 丰都县| 安康市| 昌宁县| 灵璧县| 遂平县| 东港市| 丰县| 贵州省| 化德县| 克什克腾旗| 兴海县| 东宁县|