Нет оригинального события на сенсорном старте

Итак, я использую JQuery (1.11.3) и застрял на чем-то, чего не могу найти в Интернете.

По сути, я привязываю обработчик к событию «touchstart» и хочу получить позицию события касания. (примечание: я также пробовал с $('#id').on('touchstart'... )

$(document).bind('touchstart','#main-button', function( e ){
    alert(Object.keys(e).join('\n'));
    alert(Object.keys(e.originalEvent).join('\n'));
    // awesome code here
})

Вот что я получаю из первого предупреждения:

скриншот Android 1 скриншот Android 2

Проблема в том, что originalEvent (который должен содержать информацию, которую я ищу) имеет только свойство isTrusted.

скриншот андроид 3

Кто-нибудь знает, что я делаю неправильно? Кстати, я использую Chrome для Android.


person Robin Nicolet    schedule 15.01.2016    source источник


Ответы (1)


У originalEvent есть и другие свойства (см. справку MDN для списка свойств события touchstart). Object.keys просто не возвращает их. Это связано с тем, что либо свойства не перечислимы, либо они определены где-то в цепочке прототипов.

Вместо этого вы можете использовать для... in для получения любых перечисляемых свойств объекта и свойств в цепочке прототипов.

$(document).bind('touchstart','#main-button', function( e ){
    alert(Object.keys(e).join('\n'));
    var keys = "";
    for(key in e.originalEvent){
       keys+=key+"\n";
    }
    alert(keys);
    // awesome code here
})
person Patrick Evans    schedule 15.01.2016
comment
Благодарю вас ! :) Я слишком верил в свои предупреждения, ха-ха. Я не знал, что Objects.keys() может опускать некоторые свойства. Черт, я скучаю по console.log() на моем телефоне. - person Robin Nicolet; 15.01.2016
comment
Разве вы не можете использовать chrome://inspect, чтобы увидеть свое приложение? ссылка на удаленную отладку на сайте developer.google. ком - person Sjoerd Pottuit; 15.01.2016