最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript 跨瀏覽器開發(fā)經(jīng)驗總結(jié)(五) js 事件

 更新時間:2010年05月19日 19:02:33   作者:  
javascript 跨瀏覽器開發(fā)之js 事件的兼容性問題,需要的朋友可以參考下。
簡單事件模型和高級事件模型

簡單事件模型和高級事件模型簡單事件,就是事件與頁面元素直觀的綁定在一起的形式,如:
復制代碼 代碼如下:

<div onclick="alert(this.innerHTML);">
element.onclick = function(){alert(this.innerHTML);}

只要不是用了個別瀏覽器獨有的事件,一般的click,mouseover事件等在各瀏覽器中都可以這么使用。

但是當一個事件需要綁定多個監(jiān)聽,或者需要動態(tài)注冊/移出監(jiān)聽時,簡單事件模型就不夠用了,需要使用高級事件模型(IE和其他瀏覽器在使用高級事件模型時就有區(qū)別了):
復制代碼 代碼如下:

//注冊
function addEventHandler(element, evtName, callback, useCapture) {
//DOM標準
if (element.addEventListener) {
element.addEventListener(evtName, callback, useCapture);
} else {
//IE方式,忽略useCapture參數(shù)
element.attachEvent('on' + evtName, callback);
}
}

//移除
function removeEventHandler(element, evtName, callback, useCapture) {
//DOM標準
if (element.removeEventListener) {
element.removeEventListener(evtName, callback, useCapture);
} else {
//IE方式,忽略useCapture參數(shù)
element.dettachEvent('on' + evtName, callback);
}
}



標簽中onclick事件與href屬性的調(diào)用順序關(guān)系
在a標簽響應點擊事件時,會先進行onclick事件的響應,再執(zhí)行href中的跳轉(zhuǎn)方法。如以下標簽點擊后會先后提示“button”和“href”:

<a href=”javascript:alert(“href”);” onclick="alert(this.innerHTML);"> button </a>

但是,最好不要在href中定義具體的javascript方法,因為這個是定義跳轉(zhuǎn)的鏈接地址的屬性,如果需要先后執(zhí)行兩個javascript方法,應該這樣寫:

<a href=”#” onclick="alert(this.innerHTML); alert(“href”);"> button </a>

但是上面的寫法中如果onclick綁定的響應方法中并沒有提交請求跳轉(zhuǎn)至別的頁面,那么會發(fā)現(xiàn)當前網(wǎng)頁做了一次刷新,因為以上代碼中href=“#”表示跳轉(zhuǎn)到當前頁的頂部,但是并沒有發(fā)出新的html請求。有的時候,我們并不希望頁面在響應onclick事件后又跳回頂部(尤其是頁面高度較長,出現(xiàn)滾動條,并且該鏈接位于頁面底部時,跳轉(zhuǎn)至頂部后用戶還需要拖動滾動條找回原來位置繼續(xù)操作時),那么應該在onclick后返回false值,阻止繼續(xù)進行href定義的動作,如:

<a href=”#” onclick="alert(this.innerHTML); alert(“href”);return false;"> button </a>

或者將#替換成空的javascript語句:

<a href=”javascript:void(0)” onclick="alert(this.innerHTML); alert(“href”);"> button </a>


onload事件的調(diào)用順序

有的時候在頁面初始化時需要調(diào)用一些腳本來設置頁面元素的初始狀態(tài),最標準的做法是用<body onload=””>方式或者document.onload方式調(diào)用。onload的事件的觸發(fā)會在頁面元素渲染完畢之后調(diào)用,這樣就保證了不會出現(xiàn)腳本執(zhí)行時找不到未渲染的頁面元素的情況。如果是在<head>區(qū)域的<script>塊中執(zhí)行腳本,并使用了頁面元素時,就很有可能出現(xiàn)找不到元素的錯誤。如果是在<body>區(qū)域的<script>塊中執(zhí)行腳本,只能使用該<script>塊之前的頁面元素,因為<body>區(qū)域的元素基本是順序解析的。


onchange事件

<input>元素和<select>的<option>元素都支持onchangge事件,但是經(jīng)常我們會發(fā)現(xiàn)元素的內(nèi)容值變化了卻沒有觸發(fā)onchangge事件。這是因為onchange事件的觸發(fā)還有另一個條件:當前元素處于失去焦點(onblur)的狀態(tài)。所以,onchange事件只能捕獲用戶操作時的值變化,對于使用javascript腳本動態(tài)改變元素value的情況,它是捕獲不到的。

事件截獲

因除了IE之外的瀏覽器不能識別window.event所以要使用以下方式來獲取當前事件和事件發(fā)生的目標元素:
var evt = e?e:(window.event?window.event:null);
var el = evt.srcElement?evt.srcElement:evt.target;

這里有一些其它相關(guān)的文章,非常值得參考下
JavaScript Event事件學習第一章 Event介紹
javascript 跨瀏覽器的事件系統(tǒng)

相關(guān)文章

  • JavaScript獲取flash對象與網(wǎng)上的有所不同

    JavaScript獲取flash對象與網(wǎng)上的有所不同

    關(guān)于js獲取flash對象,網(wǎng)上有非常多的例子,但不是我想要的,經(jīng)測試整理,因此本文誕生了
    2014-04-04
  • JavaScript詳解類數(shù)組與可迭代對象的實現(xiàn)原理

    JavaScript詳解類數(shù)組與可迭代對象的實現(xiàn)原理

    這篇文章主要介紹了JavaScript詳解類數(shù)組與可迭代對象的實現(xiàn)原理,ES6中引入了迭代器與可迭代對象的概念,并且提供了對可迭代對象的相關(guān)支持,如for...of循環(huán),Map(iterable)構(gòu)造器,展開語法...等。讓我們對數(shù)組外的數(shù)據(jù)集合的遍歷操作也得到極大簡化
    2022-06-06
  • Javasipt:操作radio標簽詳解

    Javasipt:操作radio標簽詳解

    本篇文章主要介紹了Javasipt:操作radio標簽。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • 全面解析Bootstrap中tooltip、popover的使用方法

    全面解析Bootstrap中tooltip、popover的使用方法

    這篇文章主要為大家詳細解析了Bootstrap中tooltip、popover的使用方法,了解提示框、彈出框的實現(xiàn)原理,感興趣的朋友可以參考一下
    2016-06-06
  • 一文帶你搞懂JavaScript中的原型和原型鏈

    一文帶你搞懂JavaScript中的原型和原型鏈

    JavaScript是基于原型繼承的語言,每個對象都有一個原型(prototype),本文則是重點對prototype相關(guān)知識點做拆解和梳理,感興趣的可以了解下
    2023-08-08
  • 利用JavaScript如何查詢某個值是否數(shù)組內(nèi)

    利用JavaScript如何查詢某個值是否數(shù)組內(nèi)

    這篇文章主要給大家介紹了關(guān)于利用JavaScript如何查詢某個值是否數(shù)組內(nèi)的相關(guān)資料,文中通過示例代碼分別介紹了實現(xiàn)該問題的一些解決方法是否可行,需要的朋友可以參考借鑒,下面跟著小編來一起學習學習吧。
    2017-07-07
  • webpack -v報錯解決方案

    webpack -v報錯解決方案

    這篇文章主要介紹了webpack -v報錯解決方案,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • 微信小程序開發(fā)常見問題及解決方案

    微信小程序開發(fā)常見問題及解決方案

    這篇文章主要介紹了微信小程序開發(fā)常見問題及解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • js實現(xiàn)canvas圖片與img圖片的相互轉(zhuǎn)換的示例

    js實現(xiàn)canvas圖片與img圖片的相互轉(zhuǎn)換的示例

    本篇文章主要介紹了js實現(xiàn)canvas圖片與img圖片的相互轉(zhuǎn)換的示例,具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • 一個簡易的js圖片輪播效果

    一個簡易的js圖片輪播效果

    這篇文章主要為大家詳細介紹了一個簡易的js圖片輪播效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評論

潞城市| 义马市| 武山县| 巩留县| 宣汉县| 桑植县| 方城县| 阿鲁科尔沁旗| 津市市| 郧西县| 抚州市| 永嘉县| 湟中县| 东城区| 青神县| 灌南县| 金阳县| 龙江县| 大悟县| 定远县| 阳江市| 衡南县| 弋阳县| 乳源| 罗山县| 凌海市| 远安县| 滕州市| 福建省| 南涧| 恩施市| 罗山县| 浠水县| 渝中区| 文化| 利辛县| 临海市| 买车| 会昌县| 肥西县| 西峡县|