如何阻止事件冒泡和默認(rèn)事件温峭?

大家好,我是IT修真院深圳分院第01期學(xué)員字支,一枚正直純潔善良的web程序員凤藏。

今天給大家分享一下,修真院官網(wǎng)js任務(wù)4堕伪,深度思考中的知識(shí)點(diǎn)——如何阻止事件冒泡和默認(rèn)事件揖庄?。

一欠雌、背景介紹

講之前先說(shuō)說(shuō)什么是事件

Event

在觸發(fā)DOM上某個(gè)事件時(shí)蹄梢,會(huì)產(chǎn)生一個(gè)事件對(duì)象event,這個(gè)對(duì)象包含著所有事件有關(guān)的信息(導(dǎo)致事件的元素富俄、事件的類型禁炒、與特定事件相關(guān)的信息)

所有瀏覽器都支持Event對(duì)象,但支持方式不同

IE中的事件對(duì)象:window.event

/*封裝Event對(duì)象

IE:window.event

*/

function getEvent(event){

return event?event:window.event;

}

二蛙酪、知識(shí)剖析

2.1冒泡機(jī)制

下面這個(gè)圖片大家應(yīng)該心領(lǐng)神會(huì)吧齐苛,氣泡從水底開始往上升,由深到淺桂塞,升到最上面凹蜂。在上升的過(guò)程中,氣泡會(huì)經(jīng)過(guò)不同深度層次的水。

相對(duì)應(yīng)地:這個(gè)氣泡就相當(dāng)于我們這里的事件玛痊,而水則相當(dāng)于我們的整個(gè)dom樹汰瘫;事件從dom樹的底層 層層往上傳遞,直至傳遞到dom的根節(jié)點(diǎn)擂煞。

2.1.1簡(jiǎn)單案例分析?

下面通過(guò)一個(gè)簡(jiǎn)單的例案例來(lái)闡述冒泡原理:

demo??詳見PPT

2.2默認(rèn)事件

瀏覽器的一些默認(rèn)的事件混弥。例如:點(diǎn)擊超鏈接跳轉(zhuǎn),點(diǎn)擊右鍵會(huì)彈出菜單对省,滑動(dòng)滾輪控制滾動(dòng)條

三蝗拿、常見問題

如何阻止事件冒泡和默認(rèn)事件?

四、解決方案

1.IE瀏覽器下面的緩存問題:

在IE瀏覽器下面使用get請(qǐng)求時(shí)蒿涎,如果第一次請(qǐng)求了數(shù)據(jù)之后IE會(huì)自動(dòng)緩存數(shù)據(jù)哀托,如果下一次再發(fā)送同樣的請(qǐng)求的時(shí)候?yàn)g覽器會(huì)自動(dòng)先去找緩存顯示出來(lái),所以如果請(qǐng)求的數(shù)據(jù)有變化的時(shí)候劳秋,這里是看不到變化的仓手。

解決辦法:

xhr.open("get","xxxx.aspx?_dc="+new Date().getTime(),true);

就是在請(qǐng)求的后面 加上_dc=...讓url變成唯一,或者是玻淑,改成post請(qǐng)求嗽冒。

2.跨域問題:

這是我們目前見到的最多的,也是最熟悉的一個(gè)問題补履。本地上面直接采用Nginx跨域?qū)崿F(xiàn)添坊。在服務(wù)器上的話,也可以用Nginx干像。注意Nginx跨域可以同時(shí)配置多個(gè)接口的帅腌,就是多寫幾個(gè)location就好了驰弄,然后location后面帶的參數(shù)不一樣就可以了麻汰。


3.Ajax亂碼問題

亂碼問題雖然我們目前遇到的不多,但是也屬于比較常見的一個(gè)問題了戚篙。出現(xiàn)的主要原因就是編碼不一致導(dǎo)致的五鲫。如果出現(xiàn)亂碼問題了,首先檢查一下meta聲明的charset要和請(qǐng)求的頁(yè)面返回的charset一致岔擂。response.charset="gb2312 or utf-8"

4.使用post提交的時(shí)候需要設(shè)置

content-Type: application/x-www-form-urlencoded

//jQuery中

content-Type: application/x-www-form-urlencoded;charset=utf-8

//AngularJS中$http的

content-Type: application/json; charset=utf-8

//使用原生Ajax需要在open以后才能使用xhr.setRequestHeader()方法位喂,否則出錯(cuò)。

xhr.open("post","xxxx.aspx",true);

xhr.setRequestHeader("content-type","application/x-www-form-urlencoded")

//用原生寫時(shí)必須在open()方法之后send()方法之前調(diào)用乱灵。

5.Ajax對(duì)象屬性的大小寫問題

有些瀏覽器比如火狐塑崖,對(duì)大小寫是敏感的,if (xhr.readystate==4)這種寫法痛倚,在IE下是成立的规婆,但是在ff下就行不通了,因?yàn)镮E不區(qū)分大小寫,ff是區(qū)分大小的抒蚜。標(biāo)準(zhǔn)寫法為if (xhr.readyState==4)掘鄙,同理還有屬性responseText,responseXML嗡髓。

6.Ajax狀態(tài)0的問題

有時(shí)候在測(cè)試Ajax代碼的時(shí)候加了xhr.status==200的判斷后操漠,一直不執(zhí)行xhr.status==200的代碼,這個(gè)就需要注意了饿这。xhr.status==200是要通過(guò)服務(wù)器確認(rèn)后來(lái)返回的浊伙,在服務(wù)器頁(yè)面沒有發(fā)生錯(cuò)誤或者轉(zhuǎn)向時(shí)才返回200狀態(tài)的此狀態(tài)和你通過(guò)瀏覽器訪問頁(yè)面時(shí)服務(wù)器定義的狀態(tài)一致。這個(gè)我們提前就跟后端對(duì)接好了长捧,問題也不大吧黄。

五、編碼實(shí)戰(zhàn)

詳見視頻:


如何阻止事件冒泡和默認(rèn)事件唆姐?_騰訊視頻

六拗慨、拓展思考

事件冒泡有什么作用?

事件冒泡允許多個(gè)操作被集中處理(把事件處理器添加到一個(gè)父級(jí)元素上奉芦,避免把事件處理器添加到多個(gè)子級(jí)元素上)赵抢,它還可以讓你在對(duì)象層的不同級(jí)別捕獲事件。讓不同的對(duì)象同時(shí)捕獲同一事件声功,并調(diào)用自己的專屬處理程序做自己的事情

七烦却、參考文獻(xiàn)

參考一:博客園

參考二:腳本之家

八、更多討論

詳見視頻先巴。

感謝大家觀看

今天的分享就到這里啦其爵,歡迎大家點(diǎn)贊、轉(zhuǎn)發(fā)伸蚯、留言摩渺、拍磚~

下期預(yù)告:前端垮域問題有哪些常用的解決方式?不見不散~

PPT鏈接

視頻鏈接


你可以直接點(diǎn)擊此鏈接與我一起學(xué)習(xí):邀請(qǐng)碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末剂邮,一起剝皮案震驚了整個(gè)濱河市摇幻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挥萌,老刑警劉巖绰姻,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異引瀑,居然都是意外死亡狂芋,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門憨栽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)帜矾,“玉大人辆影,你說(shuō)我怎么就攤上這事∈蛱兀” “怎么了蛙讥?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)灭衷。 經(jīng)常有香客問我次慢,道長(zhǎng),這世上最難降的妖魔是什么翔曲? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任迫像,我火速辦了婚禮,結(jié)果婚禮上瞳遍,老公的妹妹穿的比我還像新娘闻妓。我一直安慰自己,他們只是感情好掠械,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布由缆。 她就那樣靜靜地躺著,像睡著了一般猾蒂。 火紅的嫁衣襯著肌膚如雪均唉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天肚菠,我揣著相機(jī)與錄音舔箭,去河邊找鬼。 笑死蚊逢,一個(gè)胖子當(dāng)著我的面吹牛层扶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烙荷,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼镜会,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了奢讨?” 一聲冷哼從身側(cè)響起稚叹,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拿诸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體塞茅,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亩码,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了野瘦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片描沟。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡飒泻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吏廉,到底是詐尸還是另有隱情泞遗,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布席覆,位于F島的核電站史辙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏佩伤。R本人自食惡果不足惜聊倔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望生巡。 院中可真熱鬧耙蔑,春花似錦、人聲如沸孤荣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)盐股。三九已至邀层,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間遂庄,已是汗流浹背寥院。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涛目,地道東北人秸谢。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像霹肝,于是被迫代替她去往敵國(guó)和親估蹄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

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