日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

innerHTML 的一些問(wèn)題

admin
2010年8月13日 18:51 本文熱度 5522

innerHTML 屬性的使用非常流行,因?yàn)樗峁┝撕?jiǎn)單的方法完全替代一個(gè) HTML 元素的內(nèi)容。另外一個(gè)方法是使用 DOM Level 2 API(removeChild, createElement, appendChild)。但很顯然,使用 innerHTML 修改 DOM tree 是非常容易且有效的方法。然而,你需要知道 innerHTML 有一些自身的問(wèn)題:



  1. 當(dāng) HTML 字符串包含一個(gè)標(biāo)記為 defer 的 script 標(biāo)簽(

    )時(shí),如 innerHTML 屬性處理不當(dāng),在 Internet Explorer 上會(huì)引起腳本注入攻擊。

  2. 設(shè)置 innerHTML 將會(huì)破壞現(xiàn)有的已注冊(cè)了事件處理函數(shù)的 HTML 元素,會(huì)在某些瀏覽器上引起內(nèi)存泄露的潛在危險(xiǎn)。

還有幾個(gè)其他次要的缺點(diǎn),也值得一提的:



  1. 你不能得到剛剛創(chuàng)建的元素的引用,需要你手動(dòng)添加代碼才能取得那些引用(使用 DOM APIs)。

  2. 你不能在所有瀏覽器的所有 HTML 元素上設(shè)置 innerHTML 屬性(比如,Internet Explorer 不允許你在表格的行元素上設(shè)置innerHTML 屬性)。

我更關(guān)注與使用 innerHTML 屬性相關(guān)的安全和內(nèi)存問(wèn)題。很顯然,這不是新問(wèn)題,已經(jīng)有能人圍繞這些中的某些問(wèn)題想出了方法。


Douglas Crockford 寫(xiě)了一個(gè)清除函數(shù),該函數(shù)負(fù)責(zé)中止由于 HTML 元素注冊(cè)事件處理函數(shù)引起的一些循環(huán)引用,并允許垃圾回收器(garbage collector)釋放與這些 HTML 元素關(guān)聯(lián)的內(nèi)存。


從 HTML 字符串中移除 script 標(biāo)簽并不像看上去那么容易。一個(gè)正則表達(dá)式可以達(dá)到預(yù)期效果,雖然很難知道是否覆蓋了所有的可能性。這里是我的解決方案:

/<script[^>]*>[\S\s]*?<\/script[^>]*>/ig

現(xiàn)在,讓我們將這兩種技術(shù)結(jié)合在到一個(gè)單獨(dú)的 setInnerHTML 函數(shù)中,并將 setInnerHTML 函數(shù)綁定到 YUI 的 YAHOO.util.Dom 上:


YAHOO
.util.Dom.setInnerHTML = function (el, html) {
    el
= YAHOO.util.Dom.get(el);
   
if (!el || typeof html !== 'string') {
       
return null;
   
}

   
// 中止循環(huán)引用
   
(function (o) {

       
var a = o.attributes, i, l, n, c;
       
if (a) {
            l
= a.length;
           
for (i = 0; i < l; i += 1) {
                n
= a[i].name;
               
if (typeof o[n] === 'function') {
                    o
[n] = null;
               
}
           
}
       
}

        a
= o.childNodes;

       
if (a) {
            l
= a.length;
           
for (i = 0; i < l; i += 1) {
                c
= o.childNodes[i];

               
// 清除子節(jié)點(diǎn)
                arguments
.callee(c);

               
// 移除所有通過(guò)YUI的addListener注冊(cè)到元素上所有監(jiān)聽(tīng)程序
                YAHOO
.util.Event.purgeElement(c);
           
}
       
}

   
})(el);

   
// 從HTML字符串中移除script,并設(shè)置innerHTML屬性
    el
.innerHTML = html.replace(/<script[^>]*>[\S\s]*?<\/script[^>]*>/ig, "");

   
// 返回第一個(gè)子節(jié)點(diǎn)的引用
   
return el.firstChild;
};

如果此函數(shù)還應(yīng)有其他任何內(nèi)容或者在正則表達(dá)式中遺漏了什么,請(qǐng)讓我知道。


很明顯,在網(wǎng)頁(yè)上還有很多其他注入惡意代碼的方法。setInnerHTML 函數(shù)僅能在所有 A-grade 瀏覽器上規(guī)格化


該文章在 2010/8/13 18:51:58 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

精品久久AV专区| 一区综合影院| 欧美成人一级视频免费在线观看 | 午夜精品电影网‘| 无码资源国产精品| 欧美老熟妇俄罗斯老熟妇| 美日韩噜噜噜| 污网站入口| 日本少归内射| 抽查草b视频| 伦理av网| ww高清国产| 久久电影网精品| 国产在线观看日韩欧美| 国产视频91在线| 日韩欧美一区国产二区| 在线观看不卡不卡一区二区| 国产欧美性二区| 亚洲日韩第十页| 粉嫩在线一区| 国产精品无码一区二区在现欢| 国产黄片制服丝袜| 欧美风精品在线| 91欧美频频| AV一二三区不卡| 人人爽爽日日干干国产| 午夜蜜臀av| 抽插爽一起草视频| 久久香蕉高潮| 99vip 无码| 人人干人人射天天综合网| 色噜噜亚洲男人天堂| 成人免费久久久av| 北条麻妃精品青青久久| 亚洲成人不卡| 亚洲天堂无码电影院| PURN在线播放| 欧美国产激情一区二区在线| 三级网站国产在线二区九一自拍 | 日韩大乱交视频网| 午夜性爱福利毛片|