国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript Event學習第六章 事件的訪問

2019-11-21 00:45:45
字體:
來源:轉載
供稿:網友
現在我們已經注冊了事件處理程序,對于事件我們還想更深入的了解。我們想知道事件發生時候的鼠標位置,我們想知道用戶按下了哪些鍵。這些都是可能的,雖然這部分有很多煩人的瀏覽器兼容性問題。(這里可以快速查看瀏覽器兼容性列表)。
要讀出事件的屬性,必須要先能訪問到事件。
瀏覽器兼容性
站在瀏覽器戰爭的角度看,Netscape實現了一個訪問模型(后來被W3C做借鑒)和很多的事件屬性,同時微軟也做了同樣的事情。當然這兩種模型是完全不兼容的。但是就像我們再簡介里面說的,如果
復制代碼 代碼如下:

if (W3C/Netscape) {
use W3C/Netscape model for access and property names
}
else if (Explorer) {
use Microsoft model for access and property names
}

這樣是不正確的解決兼容性問題的辦法,他會讓一些能執行大部分代碼但是沒有考慮到的瀏覽器失去作用。所以我們得先訪問一個事件然后再分別讀取他的屬性。
我們先來討論訪問事件的問題,事件屬性會在后面討論。
W3C/Netscape
在W3C/Netscape事件訪問模型中事件會被當做一個參數傳遞給事件處理程序。所以如果你定義一個事件處理程序
element.onclick=doSomething;

doSomething()就會把事件當做一個參數。習慣上保存在一個e變量中,當然你可以改成任何名字:
復制代碼 代碼如下:

function doSomething(e) {
// e gives access to the event
}

這是完全自動的,不需要其他的代碼。在匿名函數中你可以這樣寫:
element.onclick = function (e) {alert('Event type is ' + e.type)}

微軟
在微軟的事件訪問模型中有一個特別的屬性window.event包含最后一個發生的事件。
復制代碼 代碼如下:

element.onclick = doSomething;

function doSomething() {
// window.event gives access to the event
}

或者
復制代碼 代碼如下:

element.onclick = function () {alert('Event type is ' + window.event.type)}

Event和event
注意到還有一個古老的Netscape屬性window.Event。IE不認識這個,Netscape 4也會曲解他。所以寫的時候一定要確保event是小寫e開頭的。
跨瀏覽器的事件訪問
很幸運的是要寫跨瀏覽器訪問事件的腳本還是很簡單的:
復制代碼 代碼如下:

element.onclick = doSomething;

function doSomething(e) {
if (!e) var e = window.event;
// e gives access to the event in all browsers
}

如果e不存在那么就給他賦值window.event。現在e在所有瀏覽器里面都表示事件。
與內聯式的事件處理程序合并
在內聯式的注冊模型中,你必須把event傳遞給函數:
復制代碼 代碼如下:

<pre onclick="doSomething(event)">

function doSomething(e) {
alert(e.type);
}

雖然在微軟模型里(window.)event是正確的屬性,其他瀏覽器也能識別。
繼續
如果你想繼續學習,請看下一章。
原文地址:http://www.quirksmode.org/js/events_access.html
第一次翻譯 大家多包含 我的twitter:@rehawk
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平昌县| 博兴县| 株洲市| 玉树县| 阿克苏市| 临潭县| 辽宁省| 陵川县| 赤水市| 莆田市| 屏山县| 铜梁县| 南漳县| 天长市| 望奎县| 香河县| 洱源县| 沁阳市| 河东区| 道孚县| 海兴县| 合川市| 杂多县| 时尚| 五原县| 大渡口区| 鲁甸县| 东莞市| 盐源县| 都昌县| 多伦县| 任丘市| 三河市| 武陟县| 和政县| 应用必备| 花垣县| 大方县| 景宁| 井陉县| 大石桥市|