2013-11-25 30 views
0

有沒有什麼方法可以用Javascript來說明最近發生的事件是什麼?我要問的原因是,我正在一個運行Windows 8的新超極本之一上運行不正常的網站,它是一臺帶觸摸屏的筆記本電腦。如果您使用標準鼠標功能(使用觸摸板或實際的鼠標),事情會正常工作,但如果您使用觸摸屏,事情不會。如何判斷剛發佈的Javascript事件

這隻發生在IE; Chrome有它自己的問題(我在代碼中已經修復),Firefox並沒有給我們任何問題。

基本上,我們的功能包括一個「hoverIntent」塊,如果你在IE上使用觸摸屏,它會註冊「over」和「out」函數,這是一個問題。

但是,如果有一種方法可以告訴我發生的最後一件事是用戶觸摸屏幕還是點擊鼠標,我會找到一個解決方案。但我不知道是否有辦法做到這一點。

我唯一能找到的就是在一個元素上添加「.data('events')」,但是返回的是「點擊」,無論它是實際的鼠標點擊還是屏幕上的點擊。

有沒有辦法做到這一點???

+1

'console.log(e)'在兩個事件處理程序中?使用調試器逐步完成代碼? – PeeHaa

回答

0

瀏覽器沒有記錄先前發生的事件的標準方式。如果您想知道當前事件發生之前發生了什麼事件,那麼您必須爲這些事件安裝事件處理程序並自行記錄它們,以便您可以在將來的某個時間回顧它們。

對於傳播的事件,您可以在document對象上安裝一些事件處理程序,並記錄最後N個事件的事件和目標。

如果您只是想知道當前事件是什麼事件,那麼您可以檢查傳入事件處理程序的event對象的type屬性,如e.type中所示。

0

您可以將事件添加到函數參數中,然後使用event.type來檢查觸發了哪個事件。 例如:

var x = function(e) { 
    alert(e.type); 
} 
+0

是的,這就是我的嘗試,但無論是點擊屏幕還是點擊鼠標,它都會返回「點擊」。 :(謝謝,雖然 – dauber

+0

@dauber你有沒有試過jQTouch?據我所知,它有不同的點擊和點擊事件 – Hessam

0

所以我發現IE瀏覽器已經從過去其他瀏覽器在宇宙中有一個完全不同的觸摸事件。 ughhh。而不是「touchstart」,你使用「MSPointerDown」等。我的解決方案基本上是爲MSIE的觸摸設備事件編寫新的事件處理程序。

相關問題