2010-09-30 12 views
7

Tôi hiện đang phát triển một ứng dụng JavaScript sẽ được triển khai trên kiosk màn hình cảm ứng chạy Chrome ở chế độ kiosk.Kích hoạt lớp giả ": hoạt động" trên màn hình cảm ứng

Tôi đã nhận thấy rằng khi tôi sử dụng chuột để nhấp vào các nút trên giao diện, các kiểu được áp dụng bởi lớp giả ": hoạt động" sẽ hiển thị khi chuột bị tắt. Vấn đề của tôi là nút tương tự được kích hoạt bằng cách chạm vào màn hình sẽ không kích hoạt trạng thái hoạt động.

Có cách nào để tạo sự kiện chạm hoạt động giống như cách nhấp chuột không?

Trả lời

2

Giả sử CSS: lớp giả đang hoạt động không hoạt động, có thể bạn sẽ cần sử dụng các sự kiện DOM.

Sự kiện "mousedown" và "mouseup" có hoạt động với màn hình cảm ứng không? Giả sử họ làm, bạn có thể thử một cái gì đó như thế này:

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); 

Sau đó trong CSS của bạn, thay thế: hoạt động với [dữ liệu hoạt động], như vậy:

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

Tôi không nghĩ rằng điều này sẽ làm việc khá giống nhau ... bạn có thể cần phải làm một số thủ đoạn để có được các phần tử con làm việc chính xác, ví dụ.

+0

Đây là một cách tiếp cận tốt, mặc dù tôi nghĩ rằng vấn đề tôi có bây giờ là mousedown và mouseup được kích hoạt khi cảm ứng kết thúc, vì vậy tôi cần phải tìm một sự kiện touchstart. –

+0

Tôi đã đánh dấu phần này là được chấp nhận, mặc dù tôi đã sửa đổi mã để áp dụng lớp "đã chọn" thay vì thêm thuộc tính hoạt động dữ liệu. Cảm ơn! Bây giờ, hãy tìm hiểu lý do tại sao Chrome không đăng ký sự kiện ontouchstart! –

+0

Vấn đề với việc sử dụng các lớp là nó làm cho khó hơn khi một phần tử có nhiều hơn một lớp cùng một lúc ... việc sử dụng các thuộc tính dễ dàng hơn, theo kinh nghiệm của tôi. Sử dụng các lớp học cũng tốt, bất cứ điều gì làm việc cho bạn. – Pauan