Как получить оригинальное событие без jQuery на iPhone - PullRequest
3 голосов
/ 04 октября 2010

Почему-то я не могу использовать jQuery.

Это мой код:

document.addEventListener("touchstart", function(e) {
    e.preventDefault();

    var orig = e.originalEvent;

    var x = orig.changedTouches[0].pageX;
    var y = orig.changedTouches[0].pageY;

    //id("#draggable").css({top: y, left: x});
    id("draggable").style.left = x;
    id("draggable").style.top = y;

});

Используя jQuery, вы можете получить originalEvent, но если вы его не используете, как его получить?

Спасибо

Ответы [ 4 ]

11 голосов
/ 04 октября 2010

Объект события jQuery, который он передает функции прослушивателя событий, является собственным созданием jQuery. Его свойство originalEvent является фактическим Event объектом, созданным браузером, поэтому, если вы присоединяете прослушиватель событий без jQuery, объект события, передаваемый вашему слушателю, в точности совпадает со свойством originalEvent события jQuery объект. Поэтому в вашем примере e - это именно то, на что e.originalEvent будет указывать, если бы вы использовали jQuery.

1 голос
/ 30 августа 2012

Я пришел с простым решением для вашего вопроса. Я добавил глобальную переменную "зависания" и события mouseover, mouseout к кнопке. Когда мышь наводит на кнопку, тогда переменная "зависает" устанавливается в значение true, а если мышь зависает над кнопкой, она устанавливается в значение false. Этот механизм позволяет определить, находится ли мышь на кнопке, когда происходит событие onchange. Таким образом, если мышь находится на кнопке во время срабатывания события onchange, мы знаем, что пользователь нажал кнопку, и это вызвало onchange.

Конечно, это быстрое и грязное решение, просто чтобы дать вам представление. Это можно сделать лучше. Надеюсь, это поможет:)

var hovered = false;

$('#button').mouseover(function(){
    hovered = true;   
}).mouseleave(function(){
    hovered = false;
});

$(function(){
    $('#button').bind("click",function(){
          alert("button click");
      });
$('#textbox').bind("change",function(){

    alert("text changed");
    if (hovered)
        $('#button').trigger('click');                
});

});​
0 голосов
/ 26 сентября 2012

Я думаю, что вы используете changeTouches, то есть список касаний для каждой точки контакта, которая внесла вклад в событие . Мультитач является примером того, когда это произойдет. Для сенсорного запуска вы можете просто проверить касания, список штрихов для каждой точки контакта, в данный момент касающейся поверхности .

var origTarget = e.originalEvent.touches[0].target
var x = e.originalEvent.touches[0].pageX
var y = e.originalEvent.touches[0].pageY
0 голосов
/ 04 октября 2010
var x = e.pageX;

Если на рабочем столе установлен Safari, откройте его в режиме iPhoneDevelop-> User Agent-> Mobile Safari...И установите точку останова внутри своей функции, чтобы вы могли проверить объект e и все его свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...