JS事件1

事件

JavaScript所支持的事件漠秋,可以分為以下幾類:

窗口事件 (Window Events)
表單元素事件 (Form Element Events)
鍵盤事件 (Keyboard Events)
鼠標(biāo)事件 (Mouse Events)

鼠標(biāo)事件

       鼠標(biāo)移動(dòng)到目標(biāo)元素上的那一刻澄峰,首先觸發(fā)mouseover 
            之后如果光標(biāo)繼續(xù)在元素上移動(dòng)爆惧,則不斷觸發(fā)mousemove 
            如果按下鼠標(biāo)上的設(shè)備(左鍵,右鍵,滾輪……),則觸發(fā)mousedown 
            當(dāng)設(shè)備彈起的時(shí)候觸發(fā)mouseup 
            目標(biāo)元素的滾動(dòng)條發(fā)生移動(dòng)時(shí)(滾動(dòng)滾輪/拖動(dòng)滾動(dòng)條。送悔。)觸發(fā)scroll
            滾動(dòng)滾輪觸發(fā)mousewheel,這個(gè)要區(qū)別于scroll 
            鼠標(biāo)移出元素的那一刻爪模,觸發(fā)mouseout 
     ##**獲取事件對(duì)象和事件源(觸發(fā)事件的元素)
           function eventHandler(e){ 
           //獲取事件對(duì)象
            e = e || window.event;//IE和Chrome下是window.event FF下是e 
           //獲取事件源 
           var target = e.target || e.srcElement;//IE和Chrome下是srcElement FF下是target } 
     **取消事件默認(rèn)行為(例如點(diǎn)擊一個(gè)<a>后不跳轉(zhuǎn)頁(yè)面而是執(zhí)行一個(gè)函數(shù)) **
         function eventHandler(e) {
             e = e || window.event; // 防止默認(rèn)行為 
                  if (e.preventDefault) { 
                           e.preventDefault();//IE以外 
                     } else { 
                           e.returnValue = false;
                     //IE //注意:這個(gè)地方是無(wú)法用return false代替的 
                     //return false只能取消元素
                   } 

窗口事件 (Window Events)

              僅在 body 和 frameset 元素中有效欠啤。事件說(shuō)明
              onload           當(dāng)網(wǎng)頁(yè)被載入時(shí)執(zhí)行腳本。
              onunload             當(dāng)網(wǎng)頁(yè)被關(guān)閉時(shí)執(zhí)行腳本屋灌。

表單元素事件(Form Element Events)

    僅在表單元素中有效洁段。
    onchange    當(dāng)元素(select 、復(fù)選框 等)改變時(shí)執(zhí)行腳本    
    onsubmit    當(dāng)表單(form)被提交時(shí)執(zhí)行腳本    
    onreset    當(dāng)表單被重置時(shí)執(zhí)行腳本    
    onselect    當(dāng)元素被選取時(shí)執(zhí)行腳本    
    onblur    當(dāng)元素失去焦點(diǎn)時(shí)執(zhí)行腳本    
    onfocus    當(dāng)元素獲得焦點(diǎn)時(shí)執(zhí)行腳本

鍵盤事件Keyboard Events)/鼠標(biāo)事件 (Mouse Events)

在下列元素中無(wú)效:base共郭、bdo祠丝、br、frame落塑、frameset纽疟、head、html憾赁、iframe污朽、meta、param龙考、script蟆肆、style 以及 title 元素。

事件源

事件源是指發(fā)生事件的DOM節(jié)點(diǎn)晦款。事件源是作為event對(duì)象的屬性存在的炎功。在W3C規(guī)范中,這個(gè)屬性是 target 缓溅;但是 IE8.0 及其以下版本不支持該屬性蛇损,它使用 srcElement 屬性來(lái)獲取事件源。

<script type="text/javascript">
document.getElementById("demo").onclick=function(e){
    var eve = e || window.event;
    var srcNode = eve.target || eve.srcElement;  // 兼容所有瀏覽器
    alert(srcNode);
}
</script>
</html>

綁定事件的方法

1 . 在DOM元素中直接綁定

  <button onclick="alert('謝謝支持')">按鈕 </button>
   * 分析:這種方式結(jié)構(gòu)不分離,效率低*

2 . 對(duì)象屬性方式

   DomObject.onclick = function(){}
  * 分析:這種方式只能綁定一個(gè)時(shí)間*

3 . addEventListener方式 (W3c中的標(biāo)準(zhǔn))

          xxxDomObject.addEventListener('click',function(){});            
          (移除xxxDomObject.removeEventListener("mousedown", mouse, false);)
      * 注意: 1.事件名,一律不帶on (即 綁在 click淤齐,load股囊,   
       change.. 等等) 2.綁定事件函數(shù)中的"this"指綁定該事件的 
       對(duì)象 3.執(zhí)行順序,是按綁定的順序來(lái)的*

取消瀏覽器默認(rèn)動(dòng)作

        對(duì)于遵循 W3C 規(guī)范的瀏覽器更啄,使用 event 對(duì)香的 
        **preventDefault()** 方法來(lái)取消默認(rèn)動(dòng)作稚疹; 但是 IE8. 及其以下版本不支持該方法,它通過對(duì) event象的 **returnValue** 屬性賦值 false 來(lái)取消默認(rèn)動(dòng)作祭务。
        兼容寫法
        document.getElementById("demo").onclick=function(e){
        var eve = e || window.event;
        try{ // 使用 try...catch 語(yǔ)句避免瀏覽器出現(xiàn)錯(cuò)誤提示
            eve.preventDefault(); // 非 IE 瀏覽器
        }catch(e){
            eve.returnValue = false; // IE8.0 及其以下版本
        }
    }

addEventLIstenner('click',function(){},true)第三個(gè)參 數(shù) false(默認(rèn)):冒泡 true :捕獲
兼容寫法

事件捕獲/事件冒泡

事件捕獲階段:事件從最上一級(jí)標(biāo)簽開始往下查找内狗,直到捕獲到事件目標(biāo)(target)。
事件冒泡階段:事件從事件目標(biāo)(target)開始义锥,往上冒泡直到頁(yè)面的最上一級(jí)標(biāo)簽柳沙。

把事件捕獲和冒泡的過程統(tǒng)稱為事件的傳播事件的傳播是可以阻止的:
? 在W3C中,使用stopPropagation()方法
? 在IE下設(shè)置cancelBubble = true;
在捕獲的過程中stopPropagation()后缨该,后面的冒泡過程也不會(huì)發(fā)生了~
阻止事件的默認(rèn)行為偎行,例如click 后的跳轉(zhuǎn)~
? 在W3C中,使用preventDefault()方法贰拿;
? 在IE下設(shè)置window.event.returnValue = false;
注:不是所有的事件都能冒泡蛤袒,例如:blur、focus膨更、load妙真、unload,

web存儲(chǔ)sessionStorage和localStorage
sessionStorage是會(huì)話級(jí)別的存儲(chǔ)荚守。而localStorage用于持久化的本地存儲(chǔ)珍德,除非主動(dòng)刪除數(shù)據(jù),否則數(shù)據(jù)是永遠(yuǎn)不會(huì)過期的矗漾。

兩這個(gè)具有相同的操作方法(setItem锈候、getItem和removeItem);
setItem存儲(chǔ)value
用途;將value 存儲(chǔ)到key字段
用法; .setItem(key,value);
sessionStorage.setItem("key","value");
localStorage.setItem("key", "value");

getItem獲取value
用途:獲取指定key本地存儲(chǔ)的值
用法:.getItem(key)
var value = sessionStorage.getItem("key"); 
var site = localStorage.getItem("site");

removeItem刪除key
用途:刪除指定key本地存儲(chǔ)的值
用法:.removeItem(key)
sessionStorage.removeItem("key"); 
localStorage.removeItem("site");

clear清除所有的key/value
用途:清除所有的key/value
用法:.clear()
sessionStorage.clear();
localStorage.clear();

cookies

     //設(shè)置cookie
    function setCookie(cname, cvalue, exdays) {
        var d = new Date();
        d.setTime(d.getTime() + (exdays*24*60*60*1000));
        var expires = "expires="+d.toUTCString();
        document.cookie = cname + "=" + cvalue + "; " + expires;
    }
    //獲取cookie
    function getCookie(cname) {
        var name = cname + "=";
        var ca = document.cookie.split(';');
        for(var i=0; i<ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1);
            if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
        }
        return "";
    }
    //清除cookie  
    function clearCookie(name) {  
        setCookie(name, "", -1);  
    }  
    function checkCookie() {
        var user = getCookie("username");
        if (user != "") {
            alert("Welcome again " + user);
        } else {
            user = prompt("Please enter your name:", "");
            if (user != "" && user != null) {
                setCookie("username", user, 365);
            }
        }
    }
    checkCookie(); 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市敞贡,隨后出現(xiàn)的幾起案子泵琳,更是在濱河造成了極大的恐慌,老刑警劉巖誊役,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件获列,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蛔垢,警方通過查閱死者的電腦和手機(jī)击孩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鹏漆,“玉大人巩梢,你說(shuō)我怎么就攤上這事创泄。” “怎么了且改?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵验烧,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我又跛,道長(zhǎng),這世上最難降的妖魔是什么若治? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任慨蓝,我火速辦了婚禮,結(jié)果婚禮上端幼,老公的妹妹穿的比我還像新娘礼烈。我一直安慰自己,他們只是感情好婆跑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布此熬。 她就那樣靜靜地躺著,像睡著了一般滑进。 火紅的嫁衣襯著肌膚如雪犀忱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天扶关,我揣著相機(jī)與錄音阴汇,去河邊找鬼。 笑死节槐,一個(gè)胖子當(dāng)著我的面吹牛搀庶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播铜异,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼哥倔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了揍庄?” 一聲冷哼從身側(cè)響起咆蒿,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎币绩,沒想到半個(gè)月后蜡秽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缆镣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年芽突,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片董瞻。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡寞蚌,死狀恐怖田巴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挟秤,我是刑警寧澤壹哺,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站艘刚,受9級(jí)特大地震影響管宵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜攀甚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一箩朴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秋度,春花似錦炸庞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至事期,卻和暖如春滥壕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背刑赶。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工捏浊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撞叨。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓金踪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親牵敷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胡岔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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

  • ★【知識(shí)點(diǎn)】: 1、掌握什么是BOM2枷餐、掌握BOM的核心-window對(duì)象3靶瘸、掌握window對(duì)象的控制、彈出窗口...
    越IT閱讀 2,445評(píng)論 0 2
  • Window對(duì)象 BOM 的核心對(duì)象是 window毛肋,它表示瀏覽器的一個(gè)實(shí)例怨咪。在瀏覽器中, window 對(duì)象有雙...
    angelwgh閱讀 454評(píng)論 0 0
  • BOM--Browser Object Model location 用于獲取或這是窗口的URL,并且可以用于解析...
    寒梁沐月閱讀 343評(píng)論 0 0
  • ECMAScript是JavaScript的核心润匙,但在web使用JavaScript诗眨,那么BOM(瀏覽器對(duì)象模型)...
    小小機(jī)器人閱讀 1,627評(píng)論 0 1
  • bom : browser object model 窗口:window對(duì)象地址欄:location對(duì)象歷史記錄欄...
    小小機(jī)器人閱讀 359評(píng)論 0 1