2014-09-22 88 views
1

我正在開發一個小型嵌入式應用程序,它使用不支持多點觸摸手勢的電阻式觸摸屏(ADS 7846)。javascript非多點觸摸事件

問題是,當使用手指(或其他物體)觸摸屏幕時,只有當手指被移除時,mousedown事件纔會在手指被釋放時被觸發,如果事實mousedown和mouseup事件僅在手指被移除時纔會觸發。

function $(id) {return document.getElementById(id)}; 

$("butsetup").addEventListener("mousedown", function(e) { 
    alert('down'); 
}); 

$("butsetup").addEventListener("mouseup", function(e) { 
    alert('up'); 
}); 

有沒有解決方案,使其按預期工作?

正如@antyrat建議此報道屬實:

alert('ontouchstart' in document.documentElement) 

但我讀的地方,一些瀏覽器「揭露」這種能力的DOM,但不啓用它?

回答

0

是的,你可以使用touchstarttouchend事件:

$("butsetup").addEventListener(('ontouchstart' in document.documentElement) ? "touchstart" : "mousedown", function(e) { 
    alert('down'); 
}); 

$("butsetup").addEventListener(('ontouchstart' in document.documentElement) ? "touchend" : "mouseout", function(e) { 
    alert('up'); 
}); 
+0

謝謝,我已經試過touchstart和touchend根本不開火! – crankshaft 2014-09-22 09:45:20

+0

你可以嘗試在控制檯「document.documentElement」中的ontouchstart中運行嗎?看看它回來了嗎? – antyrat 2014-09-22 09:46:12

+0

謝謝,不幸的是沒有javascript控制檯,我在320 x 240屏幕上使用midori! – crankshaft 2014-09-22 10:00:16

0

使用touchstarttouchend事件。

$("butsetup").addEventListener("touchstart", function(event){ 
    alert('touchstart'); 
}, true); 

$("butsetup").addEventListener("touchend", function(event){ 
    alert('touchend'); 
}, true); 
+0

謝謝,但觸發和touchend事件不會觸發。 – crankshaft 2014-09-22 10:07:57

+0

我認爲元素或jquery出了問題。 touchstart是否返回任何對象或爲null?這些事件經過測試,工作正常! – 2014-09-22 10:12:13

+0

oops sorrie,我沒有使用jquery,$()是document.getElementById()的別名() – crankshaft 2014-09-22 10:16:38