事件委托及移除事件處理程序

????????在JavaScript中,添加到頁面的事件處理程序數(shù)量直接關(guān)系到頁面的整體運(yùn)行性能镐捧,主要原因?yàn)椋菏紫龋總€函數(shù)都是對象臭增,都會占用內(nèi)存懂酱,內(nèi)存中的對象越多,性能就越差誊抛。其次必須事先指定所有時間處理程序而導(dǎo)致的DOM訪問次數(shù)列牺,會延遲整個頁面的交互就緒時間。

1.事件委托

????????對“事件處理程序過多”的解決方案就是事件委托芍锚。事件委托利用了事件的冒泡昔园,只指定一個事件處理程序,就可以管理某一類型的所有事件并炮。優(yōu)點(diǎn)如下:
????????·??document對象很快就可訪問,可以在頁面生命周期的任何時間點(diǎn)上為他添加事件處理程序(無需dengdai DOMContentLoaded或load事件)甥郑。
????????·??在頁面設(shè)置事件處理程序所花的事件更少逃魄,只添加一個事件處理程序所需的DOM引用更少,所花的事件也更少澜搅。
????????·??整個頁面站用的內(nèi)存空間更少伍俘,能夠提升整體性能邪锌。

<!-- html代碼 -->
<ul id = "someone"> 
     <li id = "name"> name </li>
     <li id = "age"> age </li>
     <li id = "address"> address </li>
</ul>

//js代碼
var person = document.getElementById("someone");
person.addEventListenter("click",function(event){

    switch(event.target.id){
        case "name":
            document.title = '''title changed';
            break;
        case "age":
            location.;
            break;
        case "address":
            alert("address");
            break;
    }
};

2.移除事件處理程序

????????在不需要的時候移除事件處理程序,也是解決上述問題的一個方案癌瘾。內(nèi)存中那些過時不用的“空事件處理程序”(dangling event handler)也是造成Web用用程序內(nèi)存性能問題的主要原因觅丰。導(dǎo)致空事件處理程序兩種情況:

第一種:從文檔中移除帶有事件處理程序的元素時。

<div id = "myDiv">
    <input type = "button" value = "Click me" id = "myBtn">
</div>

<script type = "text/javascript">
    var btn = document.getElementById("myBtn");
    btn.onclick = function(){
        //do something
        btn.onclick = null;  //移除事假能處理程序
        document.getElementById("myDiv").innerHTML = "processing...";
    }

在事件處理程序中刪除按鈕也能阻止事件冒泡妨退,目標(biāo)元素在文檔中是事件冒泡的前提妇萄。

第二種:頁面卸載的時候

頁面被卸載之前沒有清理干凈事件處理程序,那他們就會滯留在內(nèi)存中咬荷,一般來說冠句,歲好的做法是在頁面卸載之前,先通過unload時間處理程序移除所有事件的處理程序幸乒。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末懦底,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子罕扎,更是在濱河造成了極大的恐慌聚唐,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腔召,死亡現(xiàn)場離奇詭異杆查,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)宴咧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門根灯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人掺栅,你說我怎么就攤上這事烙肺。” “怎么了氧卧?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵桃笙,是天一觀的道長。 經(jīng)常有香客問我沙绝,道長搏明,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任闪檬,我火速辦了婚禮星著,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘粗悯。我一直安慰自己虚循,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著横缔,像睡著了一般铺遂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茎刚,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天襟锐,我揣著相機(jī)與錄音,去河邊找鬼膛锭。 笑死粮坞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的泉沾。 我是一名探鬼主播捞蚂,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼跷究!你這毒婦竟也來了姓迅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤俊马,失蹤者是張志新(化名)和其女友劉穎丁存,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柴我,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡解寝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了艘儒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聋伦。...
    茶點(diǎn)故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖界睁,靈堂內(nèi)的尸體忽然破棺而出觉增,到底是詐尸還是另有隱情,我是刑警寧澤翻斟,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布逾礁,位于F島的核電站,受9級特大地震影響访惜,放射性物質(zhì)發(fā)生泄漏嘹履。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一债热、第九天 我趴在偏房一處隱蔽的房頂上張望砾嫉。 院中可真熱鬧,春花似錦窒篱、人聲如沸焰枢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽济锄。三九已至,卻和暖如春霍转,著一層夾襖步出監(jiān)牢的瞬間荐绝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工避消, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留低滩,地道東北人。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓岩喷,卻偏偏與公主長得像恕沫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纱意,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容

  • ??JavaScript 與 HTML 之間的交互是通過事件實(shí)現(xiàn)的偷霉。 ??事件迄委,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,490評論 1 11
  • JavaScript 與 HTML 之間的交互是通過事件實(shí)現(xiàn)的。事件类少,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特定的交互瞬...
    LemonnYan閱讀 679評論 0 4
  • 第13章 事件 1. 事件流 事件流描述的是從頁面中接收事件的順序叙身。 (1) 事件冒泡 IE 的事件流叫做事件冒泡...
    yinxmm閱讀 948評論 0 17
  • 事件是什么,可以用來做什么硫狞,什么時候用到它信轿? 事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特定的交互瞬間残吩。JavaScr...
    茂茂愛吃魚閱讀 1,517評論 0 16
  • 今天在跑步機(jī)上走了半個多小時财忽,最后的10分鐘真的好難堅(jiān)持啊世剖!特別羨慕那些有毅力的人定罢,堅(jiān)持一件事,一天兩天旁瘫,都很容易...
    清風(fēng)如水閱讀 342評論 0 0