12霎苗、JavaScript-事件

每天一句 : 讓思考成為一種習(xí)慣循狰。

一咧擂、事件捕獲

  • 事件綁定方式一(同一事件會(huì)被覆蓋)
  oBox.onclick = fn1;
  oBox.onclick = fn2;  // 覆蓋掉fn1

  • 事件綁定方式二(同一事件可以多個(gè)處理)
  addEventListener(事件名詞逞盆,事件函數(shù),是否捕獲)
  參數(shù)3: true表示采用事件捕獲松申,若false事件冒泡
  oBox.addEventListener('click', fn, true);

注1: 事件冒泡是從里到外的傳遞方式云芦,即是從事件目標(biāo)(target)開(kāi)始,往上冒泡直到頁(yè)面的最上一級(jí)標(biāo)簽; 事件捕獲是從外到里的傳遞方式贸桶,即是從最上一級(jí)標(biāo)簽開(kāi)始往下查找舅逸,直到捕獲到事件目標(biāo)(target);
注2: IE中不支持事件捕獲;

二、DOM事件流

事件捕獲階段 ? 目標(biāo)元素階段 => 事件冒泡階段

三皇筛、事件取消

  • 事件取消方式一
  document.onclick = null;

  • 事件取消方式二
  IE: obj.detachEvent(事件名稱琉历, 事件函數(shù));
  非IE: obj.removeEventListener(事件名稱, 事件函數(shù), 是否捕獲);
  document.removeEventListener('click', fn1, false);
  window.removeEventListener ? document.removeEventListener('click', fn1, false) : document.detachEvent('click', fn1);

四、鍵盤事件

  • onkeydown: 當(dāng)鍵盤按鍵按下時(shí)
  • onkeyup: 當(dāng)鍵盤按鈕釋放(彈起)時(shí)
  • event.keyCode: 數(shù)字類型(鍵盤按鈕的值) ASCII值
  • ctrlkey/shiftkey/altkey: 當(dāng)一個(gè)事件發(fā)生時(shí)设联,如果是按下?tīng)顟B(tài)善已,返回true灼捂,否則返回false

案例: 鍵盤控制元素移動(dòng)

五、事件默認(rèn)行為

當(dāng)一個(gè)事件發(fā)生時(shí)换团,瀏覽器自己會(huì)默認(rèn)做的事情;

  • 如何阻止事件默認(rèn)行為
    a悉稠、當(dāng)前這個(gè)行為是什么事件觸發(fā)的
    b、在這個(gè)事件的處理函數(shù)中(高版本中只需要 return false;即可)
    ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;

  • 右鍵菜單事件oncontextmenu

六艘包、鼠標(biāo)樣式

  cursor: 其他取值   
  auto:標(biāo)準(zhǔn)光標(biāo)   
  default:標(biāo)準(zhǔn)箭頭   
  hand:手形光標(biāo)   
  wait:等待光標(biāo)   
  text:I形光標(biāo)   
  vertical-text:水平I形光標(biāo)   
  no-drop:不可拖動(dòng)光標(biāo)   
  not-allowed:無(wú)效光標(biāo)   
  help:幫助光標(biāo)   
  all-scroll:三角方向標(biāo)   
  move:移動(dòng)標(biāo)   
  crosshair:十字標(biāo)

  例如1: 
    oBox.style.cursor = 'crosshair';

  例如2: 
  #box h3{
     // 鼠標(biāo)的樣式設(shè)置
    cursor: move;
  }

七的猛、拖拽

  • 拖拽原理
<script>
            window.onload = function(){
                var oBox = document.getElementById("box");

                oBox.onmousedown = function(ev){
                    // 保存鼠標(biāo)相對(duì)于oBox元素的位置
                    ev = event || ev;
                    var dowX = ev.offsetX;
                    var dowY = ev.offsetY;

                    // 鼠標(biāo)移動(dòng)范圍是整個(gè)document
                    document.onmousemove = function(ev){
                        ev = event || ev;

                        // 元素距離瀏覽器左邊位置 = ev.clientX(鼠標(biāo)距離瀏覽器左邊位置) - dowX(鼠標(biāo)相對(duì)于元素的位置)
                        oBox.style.left = ev.clientX - dowX + 'px';
                        oBox.style.top = ev.clientY - dowY + 'px';
                    }

                    document.onmouseup = function(){
                        document.onmousemove = document.onmouseup = null;
                    }
                }
            }
        </script>

  • 完美拖拽
  思路:
  1)拖拽效果
    <1>給元素#box定位(absolute,relative,fixed)
    <2>拖拽原理
      - 給#box綁定onmousedown,并記錄按下的光標(biāo)位置(offsetX,offsetY),然后給document綁定onmousemove事件想虎,在onmousemove事件內(nèi)不斷改變#box的top,left值
        left = e.clicentX - offsetX + 'px';
        top = e.clientY - offsetY + 'px';
        - 鼠標(biāo)松開(kāi)時(shí)清除document的onmousemove事件
2)回放效果
    <1>在拖拽過(guò)程中記錄移動(dòng)過(guò)的每一個(gè)坐標(biāo)在數(shù)組pos里
    <2>點(diǎn)擊回放
        點(diǎn)擊a標(biāo)簽時(shí)卦尊,#box窗口按原路徑返回原來(lái)的位置
        遍歷arr,不斷改變#box的top,left值
    <3>回放完成后清空數(shù)組arr
     */

作者:西門奄
鏈接:http://www.reibang.com/u/77035eb804c3
來(lái)源:簡(jiǎn)書
簡(jiǎn)書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處舌厨。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末岂却,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子裙椭,更是在濱河造成了極大的恐慌躏哩,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揉燃,死亡現(xiàn)場(chǎng)離奇詭異扫尺,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)炊汤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門正驻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人抢腐,你說(shuō)我怎么就攤上這事姑曙。” “怎么了氓栈?”我有些...
    開(kāi)封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵渣磷,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我授瘦,道長(zhǎng)醋界,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任提完,我火速辦了婚禮形纺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘徒欣。我一直安慰自己逐样,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著脂新,像睡著了一般挪捕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上争便,一...
    開(kāi)封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天级零,我揣著相機(jī)與錄音,去河邊找鬼滞乙。 笑死奏纪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的斩启。 我是一名探鬼主播序调,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼兔簇!你這毒婦竟也來(lái)了发绢?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤男韧,失蹤者是張志新(化名)和其女友劉穎朴摊,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體此虑,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年口锭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了朦前。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鹃操,死狀恐怖韭寸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情荆隘,我是刑警寧澤恩伺,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站椰拒,受9級(jí)特大地震影響晶渠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜燃观,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一褒脯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缆毁,春花似錦番川、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)践啄。三九已至,卻和暖如春沉御,著一層夾襖步出監(jiān)牢的瞬間屿讽,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工嚷节, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留聂儒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓硫痰,卻偏偏與公主長(zhǎng)得像衩婚,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子效斑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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

  • 文件的寫 錯(cuò)誤代碼: 在文件讀寫這方面我一直很無(wú)能非春,學(xué)Java的時(shí)候也會(huì)在這方面犯糊涂,永遠(yuǎn)記不住格式缓屠,仿佛是一個(gè)...
    goodAndBad閱讀 237評(píng)論 5 0
  • 目錄 當(dāng)愛(ài)已成殤(1) 當(dāng)愛(ài)已成殤(2) 當(dāng)愛(ài)已成殤(3) “我在哪里奇昙?”睜開(kāi)眼只覺(jué)得頭痛。環(huán)顧四周敌完,是一個(gè)古色古...
    王大閑人閱讀 254評(píng)論 0 0
  • 先行占坑储耐。 JWT = header + payload + signature Claims:Registere...
    白玉昭閱讀 622評(píng)論 0 0