2010-09-30 44 views
7

Şu anda kiosk modunda Chrome'u çalıştıran bir dokunmatik kioskta dağıtılacak bir JavaScript uygulaması geliştiriyorum.Dokunmatik ekranda "etkin" sözde sınıfı tetikleme

Arabirimdeki düğmelere tıklamak için fareyi kullandığımda, ": etkin" sözde sınıfın uyguladığı stiller, fare kapalıyken görünür olduğunu fark ettim. Benim sorunum, ekrana dokunarak aynı düğmeye basmanın aktif durumu tetiklememesidir.

Dokunma olayı oluşturmanın fare tıklatmayla aynı şekilde davranmasının bir yolu var mı?

cevap

2

CSS: etkin sözde sınıfın çalışmadığı varsayıldığında, muhtemelen DOM olaylarını kullanmanız gerekecektir.

"Mousedown" ve "mouseup" olayları dokunmatik ekranlarla çalışıyor mu? yerine, sizin CSS dahilinde Sonra

addEventListener("mousedown", function (event) { 
    if (event.target.setAttribute) { 
     event.target.setAttribute("data-active", ""); 
    } 
}, true); 

addEventListener("mouseup", function (event) { 
    if (event.target.removeAttribute) { 
     event.target.removeAttribute("data-active"); 
    } 
}, true); 

: yaptıkları varsayılırsa, böyle bir şey deneyebilirsiniz [veri aktif], şöyle aktif:

div[data-active] { 
    /* blah blah */ 
} 

Bunu sanmıyorum olacak Aynı şekilde çalışın ... örneğin, çocuk elemanlarının doğru çalışması için bazı hileler yapmanız gerekebilir.

+0

Bu iyi bir yaklaşım, ancak şu anda sahip olduğum problemin, dokunmatik bittiğinde mousedown ve mouseup'ın her ikisi de tetiklendiğini düşünüyorum, bu yüzden bir touchstart olayı bulmam gerekiyor. –

+0

Bunu kabul edildi olarak işaretledim, ancak veri etkin özniteliğini eklemek yerine "seçili" sınıfı uygulamak için kodu değiştirdim. Teşekkürler! Artık Chrome'un neden tochstart etkinliklerine kaydolmadığını öğrenmek için! –

+0

Sınıfları kullanmayla ilgili problem, bir elemanın aynı anda birden fazla sınıfa sahip olduğunda bunu zorlaştırmasıdır. Sınıfları kullanmak da iyi, sizin için ne olursa olsun. – Pauan