為什么event.clinetX能獲取到坐標值呢,event沒定義過呀?
event是一個關(guān)鍵字嗎? function fnDown(){document.onmousemove=function(event){event= event||window.event;document.title=event.clientX+','event.clientY;}中的event并沒有傳進來,也沒有實現(xiàn)定義,為什么event.clientX和event.clientY能獲取到坐標呢?
2015-10-23
在了解這個函數(shù)前可以再復習下上面講的幾個章節(jié),先了解下event什么,是怎么產(chǎn)生的。
老師講的前幾章節(jié)的內(nèi)容都是《javascript高級程序設計》上的內(nèi)容,正好最近也在看這本書,總結(jié)了以下你的問題相關(guān)的知識,也許會對你理解這個函數(shù)有幫助,具體知識還可以從書上得到。
?event 是一個事件對象,當你觸發(fā)DOM上的某個事件的時候就會產(chǎn)生這個對象。對象里面包含了所有與事件相關(guān)的信息。包括導致事件的元素,事件的類型(click、focus、blur、keydown、keypress、mouseover、 load等等事件類型),以及與特定事件相關(guān)的信息等。
對于兼容DOM的瀏覽器,會將一個event對象直接傳入到事件處理函數(shù)中。(
?????無論你用DOM0級的事件處理函數(shù):
????????????//like this.
????????????obj.onclick = function(event){ ? //函數(shù)體 ??}
????還是用DOM2級的處理函數(shù):
?????????????//like this.
????????????obj.addEventListener("click",function(event){ 函數(shù)體},false);
????都會傳入一個event對象到事件處理函數(shù)中。
)
3.????在IE中 event 對象又是怎樣的呢:
????如果你用dom0級方法添加事件處理程序時,event對象就是作為windows對象的一個屬性來存在的。
比如: ?obj.onclick = function( ){
????????????????var event = window.event; ? ?//在IE中獲取event對象
}
? 如果你不用dom0級方法添加事件,而是用IE自己的事件處理程序 ?attachEvent( )添加事件的話:
????obj.attachEvent("onclic",function(event){ ? //因為這個方法的作用域本來就在全局作用域的 也就是windows,相當于也是通過windows對象來訪問event對象
????????alert(event.type); //click?
});
所以你問的?function fnDown(){
????????????????document.onmousemove=function(event){
????????????????event= event||window.event; ?//它其實已經(jīng)在這里獲取了event對象了,無論它是不是兼容DOM的瀏覽器,都可以通過這個跨瀏覽器的代碼獲取event對象
????????????????document.title=event.clientX+','event.clientY; ?//所以這里能獲得客戶端的坐標信息;clientX?clientY都是event對象的屬性
}
2015-10-15
是事件
2015-10-15
omnouseover 不就是個時間嗎