2013-12-09 6 views
0

Так что я уже пробовал делатьсенсорных событий для JavaScript

function isTouchDevice() { 
    return 'ontouchstart' in window; 
} 

    function customBindTest(ele, eventType, callback) { 
    if ((eventType === 'click') && isTouchDevice()) { 
     eventType = 'touchend'; 
    } 
    var onevent = 'on' + eventType; 
     if (ele.attachEvent) { // IE 
     ele.attachEvent(onevent, callback); 
    } else if (ele.addEventListener) { 
     ele.addEventListener(eventType, callback, false); 
    } else { 
     ele[onevent] = callback; 
    } 
} 

Но проблема сейчас я сталкиваюсь в том, что когда на ноутбуке, таких как Windows 8 с сенсорным экраном и коврик для мыши. Вы не можете нажать с помощью мыши в браузерах, таких как Chrome (принимая во внимание, IE10 прекрасно, потому что он не имеет ключа ontouchstart.

Кто-нибудь есть какие-либо идеи или возникли аналогичные вопросы в прошлом?

+0

Предоставленный вами код не будет запрещать щелчки мыши. Вы должны показать код, который имеет дело с «прессой» – CodingIntrigue

+0

Ну, я тестирую, если это сенсорное устройство, а затем привязывающее касание, а не щелчок. –

+1

Почему бы не привязываться к обоим? – CodingIntrigue

ответ

0

Некоторое время назад я написал пользовательскую систему событий touch/mouse, которая хранит прокрутку, и все остальное, как обычно, но добавляет новые события на основе его устройств. Мы также используем мышь для создания кликов & кликов или touchhes.it также делает все математика вне mousemove/touchmove, чтобы оставить эту функцию без запаха.

Сначала я проверил, какой тип os у меня есть (в вашем случае вам нужно изменить эту строку чтобы заставить его работать в Win8)

(/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)?'touch':'mouse') 

Затем я создал массив, содержащий различные функции для мыши и сенсорных событий ...

создает 6 новых событий.

Ь: FastClick (особенно для Ios устройств еще щелчок принимает 500ms) 50ms

ПФС: superfastclick (это для основных элементов, его в основном на touchstart) 0ms

не то использование когда вы также прокручиваете.

и различные пойло SWL, SWR, ЕРР, SWD (swipeleft, вправо, вверх & вниз)

мышь реагирует, как обычный сенсорный событие

если вы> hold- Нажать на> переместить вправо-> отпустить, это дает вам случайное совпадение.

сказал, что в вашем случае вам нужно оба. (Которым может быть проблемой ... Незнайка) , но вы можете сделать это, просто удалив эту строку (также удалить проверку устройства указана на вершине)

for(var a in f[m]){d.addEventListener(a,f[m][a],false);} 

и заменить его

for(var a in f['mouse']){d.addEventListener(a,f['mouse'][a],false);} 
for(var a in f['touch']){d.addEventListener(a,f['touch'][a],false);} 

я не могу проверить его на выигрыш 8 прикосновением ... попробовать.

http://jsfiddle.net/3u5pJ/

Для проверки просто проведите пальцем или нажмите на результат поле, глядя на консоли.

ps: Как стандартизованный стандарт 10, все должно работать как во всех новых современных браузерах. Этот код не предназначен для работы с устаревшими браузерами.

EDIT

этот пример добавляет события прикосновения на мыши и прикосновений.

http://jsfiddle.net/3u5pJ/1/

Для проверки просто проведите пальцем или нажмите на результат поле, глядя на консоли.

Да, и если вы используете этот код, u не должны использовать события кликов, так как они очень плохие в сенсорных устройствах, но используют пользовательский fc или sfc.

использование:

element.addEventListener('swl',handlerFunction,false)//swipeleft 

, если вы не понимаете, что-то просто спросить.

Смежные вопросы