1. 程式人生 > >JS獲取事件物件,獲取事件的源物件(Firefox,IE)

JS獲取事件物件,獲取事件的源物件(Firefox,IE)

做筆記,以防自己忘記~~ JS獲取事件event,不同瀏覽器有不同的做法。

例如IE下,在js函式中,通過window.event就可以獲取,不必在函式中新增什麼引數。

也可以用Prototype或者JQuery等,它們有他們對事件的包裝。還是使用JS庫比較好,不然就有下邊的麻煩

Firefox要傳遞引數

<head><script>function click1(event,str1){ alert(event+str1); } </script></head><body><input type=
"button" id="abc" onclick="click1(event,'kenko');" value="click me"/></body>

IE不需要傳遞引數

<head><script>function click1(){ alert(event.srcElement.value); } </script></head><body><input type="button" id="abc" onclick="click1();" value="click me"/><
/body>

event.srcElement

event.srcElement.id

================================================================================

在IE下,event物件有srcElement屬性,但是沒有target屬性;Firefox下,even物件有target屬性,但是沒有srcElement屬性.。

    解決方法:使用obj(obj = event.srcElement ? event.srcElement : event.target;)來代替IE下的event.srcElement或者Firefox下的event.target.。同時注意event的 相容性問題。 

感覺這個挺好,可以捕獲當前事件作用的物件,如event.srcElement.tagName可以捕獲活動標記名稱。
注意獲取的標記都以大寫表示,如"TD","TR","A"等。所以把看過的一些抄下來,不記得的時候再來看看。

<script type="text/javascript">
    function tdclick(){
        if(event.srcElement.tagName.toLowerCase()=='td')
             alert("行:"+(event.srcElement.parentNode.rowIndex+1)+"列:"+(event.srcElement.cellIndex+1));
     }
</script>

event.srcElement從字面上可以看出來有以下關鍵字:事件,源     他的意思就是:當前事件的源,

我們可以呼叫他的各種屬性 就像:document.getElementById("")這樣的功能,

經常有人問 firefox 下的 event.srcElement 怎麼用,在此詳細說明:

IE下,event物件有srcElement屬性,但是沒有target屬性;Firefox下,event物件有target屬性,但是沒有srcElement屬性.但他們的作用是相當的,即:

firefox 下的 event.target = IE 下的 event.srcElement

解決方法:使用obj(obj = event.srcElement ? event.srcElement : event.target;)來代替IE下的event.srcElement或者Firefox下的event.target.

在 ie中處理事件直接使用window.event物件即可,但在firefox中,是沒有 window.event物件的,函式需要使用事件的時候,需要在事件發生時把事件作為引數傳遞給函式,不象在ie中,事件物件是全域性的,隨處都可以訪 問.下面這個getEvent()函式可以相容firefox和ie,只需要在訪問事件物件的函式的開始呼叫getEvent()即可,不用再把事件作為 引數傳遞.以下程式碼已經實驗通過!

function myfunc()
{
var evt=getEvent();
var element=evt.srcElement || evt.target;
}

function getEvent()
{
if(document.all)
{
return window.event;//如果是ie
}
func=getEvent.caller;
while(func!=null)
{
var arg0=func.arguments[0];
if(arg0)
{
if((arg0.constructor==Event || arg0.constructor ==MouseEvent)
||(typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation))
{
return arg0;
}
}
func=func.caller;
}
return null;
}

相關推薦

JS獲取事件物件獲取事件物件FirefoxIE

做筆記,以防自己忘記~~ JS獲取事件event,不同瀏覽器有不同的做法。 例如IE下,在js函式中,通過window.event就可以獲取,不必在函式中新增什麼引數。 也可以用Prototype或者JQuery等,它們有他們對事件的包裝。還是使用JS庫比較好,不然就有下邊的麻煩。 Firefox:要傳遞

java中 快速獲取當天0點0分0秒00:00:0023點59分59秒23:59:59

// 利用Apache lang包快速獲取凌晨0點0分0秒,23點59分59秒字串         System.out.println(DateFormatUtils.format(new Date(), "yyyy-MM-dd 00:0

怎樣通過GitHub API獲取某個專案被Star的詳細資訊時間使用者ID

這個需求也比較明確,目前GitHub的頁面上並不提供對某個專案Star隨時間變化的資料,但實際上可以通過GitHub API獲取,在之前的一篇日誌中,我簡單介紹了通過curl使用GitHub API的方法,不過正如這裡介紹的:Most applications will us

python實戰之IO多路複用別名:事件驅動三種模式:sellect,poll,epollPython的selectors模組

IO多路複用前需瞭解 通常,我們寫伺服器處理模型的程式時,有以下幾種模型: (1)每收到一個請求,建立一個新的程序,來處理該請求; (2)每收到一個請求,建立一個新的執行緒,來處理該請求; (3)每收到一個請求,放入一個事件列表,讓主程序通過非阻塞I/O方式來處理請求 上面的幾種

JS獲取本月第一天和最後一天月末和月初

var nowDate = new Date(); var cloneNowDate = new Date(); var fullYear = nowDate.getFullYear(); var month = nowDate.getMonth() + 1; // getMonth 方

android上獲取imsi碼判斷運營商資訊移動聯通電信

專案中要用到這個知識點,於是有整理這個知識點,並寫成博文,以作備忘。 一.imsi碼概念的理解 1.概念 IMSI:國際移動使用者識別碼(唯一標識),IMSI = MCC + MNC + MSIN,其中MCC是指移動臺國家程式碼(3 位,中國460),MNC是指移動網程式碼

iOS定位獲取當前所在經緯度進而獲得具體地址省市地區街道

 首先,我們需要在工程中匯入CoreLocation系統框架。然後在我們的控制器中引入標頭檔案。 #import <CoreLocation/CoreLocation.h> 然後,宣告一個CLLocationManager物件作為成員變數,用於定位獲取經緯度

Java: 獲取jar包中某個類的serialVersionUID序列版本id

2018.11.02 文章目錄 前言 方法 前言 在《序列化及Java Serializable序列化介面》一文,我介紹了一個case:一個已上線的版本中包含了未定義serialVersionUID序

獲取資料庫表資料作為HTTP請求引數mysql為例

目錄 寫在前面:因為是邊操作邊寫的,之前截的圖有些注意事項沒有說清楚,所以圖片有些調整之後是後面補進去的,所以看著圖片前後有點一樣。但操作順序說明是沒問題的。 當然這個也是參考了各位網上的大神的經驗並一一試驗得出來的結果。如

Android獲取手機基站資訊並進行基站定位基站定位原理

http://blog.csdn.net/mad1989/article/details/9970431 一,首先普及一下手機基站資訊中相關的專業詞彙:  通過TelephonyManager 獲取lac:mcc:mnc:cell-id(基站資訊)的解釋: MCC,M

獲取伺服器的時間新增到資料庫中預設值設定

獲取伺服器的時間新增到資料庫中作為使用者使用的起始時間,不想在程式中單獨實現這個功能顯得繁瑣。所以便在搭建資料庫的過程中找到了這個小技巧。 使用:SQL Server 列屬性——預設值或繫結  實現: 在資料表中新增使用者上機資訊時,資料庫自動捕獲伺服器時間到表中。 配圖

url獲取資料介面呼叫方法+自定義顯示介面回撥

呼叫方法 new MyTask(new MyTask.Icallbacks(){});//生成返回值myTask.execute("地址");//介面設定 public class MyNetTask

詳細介紹—獲取ACCESS資料庫中所有的表名ODBC + MFC實現解決方法

網上關於獲取ACCESS資料庫中所有的表名的文章挺多的,但是說的不是很詳細,對於初學者來說很難看懂(我也是初學者呵呵),研究了很久,自己弄懂後,覺得很有必要做個詳細的介紹,以免其他初學者向我一樣,因為研究這個東西走很多彎路從而浪費過多寶貴的時間。  獲取ACCESS資料庫中

Django網站建設-頭像修改郵箱及密碼修改formjs檔案模板配置

1.選擇好模板,並分析頁面 2.修改並自定義基礎模板 3.修改各個頁面,修改title,麵包屑等 4.定義好使用者資訊的View 5. 資料繫結,資料回填 6. 配置路徑利用include 7. 模板顯示,在模板中顯示預設值:{{request.us

根據當前時間獲取當前周的開始、結束時間週一到週日

專案開發中,碰見每週更新三道題的需求,不能多於三道題 package test; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; impor

Python可迭代物件中的新增和刪除addappend,pop,remove,insert

 學習python的list,tuple,dict,set的時候被插入和刪除的用法弄得有點暈,所以進行歸納,以便記憶 對於List: classmates = ['Michael', 'Bob', 'Tracy'] classmates.append('Adam')

java 獲取當天0點0分0秒00:00:00+Calendar工具類

/** * 獲取當天0點0分0秒(00:00:00) * * @return */ private static String getTimesmorning() { Calendar ca

同一區域網內怎樣獲取新來美眉QQ號碼!(*^__^*) 嘻嘻……

看到這個標題,想必有些人已經按耐不住內心的激動,迫切想知道如何在區域網內獲取新來美眉的QQ號碼的。當然,如果你是程式猿妹子,公司新來的帥哥你也可以大膽的用這種方法獲取哦。當然,有的人也許會說獲取QQ號

用兩種方式估計北京一年出租出去的房子數量並互相驗證。滴滴打車-2014

延伸 自由職業 方式 個人 學術 題目中的 其他 驗證 工作 詳解: 可以采取兩種方法。 方法一: (1)分析問題 北京一年出租出去的房子數量,租房是一個強需求,穩定有房的居民不會去租房,無房但已經租房的人不會去租房,無房且需要居住房子的人才會去租房,也是我們需要關註的群體

ArrayList 基於Java1.8

dex extends code ray ati 沒有 cloneabl 刪除 class ArrayList 基於數組實現,也就是類對變量 Object[]系列操作,封裝為常用的add,remove,indexOf, contains本質是通過 size 計數器對數組進行