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 
 ##**獲取事件對象和事件源(觸發(fā)事件的元素)
       function eventHandler(e){ 
       //獲取事件對象
        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)頁面而是執(zhí)行一個(gè)函數(shù)) **
     function eventHandler(e) {
         e = e || window.event; // 防止默認(rèn)行為 
              if (e.preventDefault) { 
                       e.preventDefault();//IE以外 
                 } else { 
                       e.returnValue = false;
                 //IE //注意:這個(gè)地方是無法用return false代替的 
                 //return false只能取消元素
               } 
     } 

窗口事件 (Window Events)

僅在 body 和 frameset 元素中有效。事件
說明
onload           當(dāng)網(wǎng)頁被載入時(shí)執(zhí)行腳本蛮放。
onunload             當(dāng)網(wǎng)頁被關(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)

    在下列元素中無效:base瞻想、bdo、br娩嚼、frame蘑险、frameset、head岳悟、html佃迄、iframe、meta贵少、param呵俏、script、style 以及 title 元素滔灶。

事件源

事件源是指發(fā)生事件的DOM節(jié)點(diǎn)普碎。
事件源是作為event對象的屬性存在的。在W3C規(guī)范中录平,這個(gè)屬性是 target 麻车;但是 IE8.0 及其以下版本不支持該屬性,它使用 srcElement 屬性來獲取事件源萄涯。

    <html>
        <head>
        <title>獲取鼠標(biāo)的坐標(biāo)信息</title>
        </head>
    <body>
        <div id="demo">點(diǎn)擊這里</div>

    </body>
    <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 . 對象屬性方式
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"指綁定該事件的對象
3.執(zhí)行順序,是按綁定的順序來的*

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

 對于遵循 W3C 規(guī)范的瀏覽器争占,使用 event 對香的 **preventDefault()** 方法來取消默認(rèn)動(dòng)作燃逻;
 但是 IE8.0 及其以下版本不支持該方法序目,它通過對 event象的 **returnValue** 屬性賦值 false 來取消默認(rèn)動(dòng)作。
兼容寫法
document.getElementById("demo").onclick=function(e){
    var eve = e || window.event;
    try{ // 使用 try...catch 語句避免瀏覽器出現(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)開始,往上冒泡直到頁面的最上一級(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

<script>
//設(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(); 
</script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宙刘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子丰辣,更是在濱河造成了極大的恐慌焰扳,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件藐石,死亡現(xiàn)場離奇詭異即供,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)于微,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門逗嫡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人株依,你說我怎么就攤上這事驱证。” “怎么了恋腕?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵抹锄,是天一觀的道長。 經(jīng)常有香客問我,道長伙单,這世上最難降的妖魔是什么获高? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮吻育,結(jié)果婚禮上念秧,老公的妹妹穿的比我還像新娘。我一直安慰自己布疼,他們只是感情好摊趾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著游两,像睡著了一般砾层。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上器罐,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天梢为,我揣著相機(jī)與錄音,去河邊找鬼轰坊。 笑死铸董,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的肴沫。 我是一名探鬼主播粟害,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼颤芬!你這毒婦竟也來了悲幅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤站蝠,失蹤者是張志新(化名)和其女友劉穎汰具,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菱魔,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡留荔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了澜倦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聚蝶。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖藻治,靈堂內(nèi)的尸體忽然破棺而出碘勉,到底是詐尸還是另有隱情,我是刑警寧澤桩卵,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布验靡,位于F島的核電站倍宾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏晴叨。R本人自食惡果不足惜凿宾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一矾屯、第九天 我趴在偏房一處隱蔽的房頂上張望兼蕊。 院中可真熱鬧,春花似錦件蚕、人聲如沸孙技。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牵啦。三九已至,卻和暖如春妄痪,著一層夾襖步出監(jiān)牢的瞬間哈雏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工衫生, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裳瘪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓罪针,卻偏偏與公主長得像彭羹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子泪酱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

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

  • 事件 JavaScript所支持的事件派殷,可以分為以下幾類: 窗口事件 (Window Events) 表單元素事件...
    昵稱不能太隨便閱讀 379評論 0 0
  • 事件是JS中的關(guān)鍵部分,所以小小的跳一下墓阀,先了解JS高程中的事件內(nèi)容毡惜。 今天才知道,事件冒泡與事件捕獲斯撮,這兩種相反...
    余生筑閱讀 131評論 0 0
  • 事件是JS中的關(guān)鍵部分经伙,所以小小的跳一下,先了解JS高程中的事件內(nèi)容吮成。 今天才知道橱乱,事件冒泡與事件捕獲,這兩種相反...
    余生筑閱讀 355評論 0 0
  • 個(gè)人博客:https://yeaseonzhang.github.io 花了半個(gè)多月的時(shí)間粱甫,終于又把“JS紅寶書”...
    Yeaseon閱讀 1,751評論 2 23
  • 1 什么是event對象 用來獲取時(shí)事件的詳細(xì)信息:鼠標(biāo)位置泳叠,鍵盤位置 2 獲取event對象(兼容性寫法) va...
    maomizone閱讀 111評論 0 0