2015-08-19 7 views
0

Я пытаюсь вызвать событие перемещения касания, когда пользователь взаимодействует с iframe.Call touch event on parent from iframe

Этот код находится на странице верхнего уровня, содержащей iframe.

var myIframe = document.getElementById('iFrame'); 
var myIframeDoc = myIframe.contentWindow.document; 
myIframeDoc.addEventListener('touchmove', function(event){ 

    console.log('iframe touched'); 

    var e = document.createEvent('TouchEvent'); 
    //e.touches = [{pageX: 10, pageY: 10}]; 
    //e.initTouchEvent('touchstart', true, true); 
    e.initUIEvent('touchstart', true, true); 

}, false); 

Так что, когда пользователь касание перемещается по IFRAME он будет позвонить по одному из указанных ниже событий (также на странице верхнего уровня).

document.addEventListener("touchmove", function(event){ 

    alert('touchmove'); 

}); 

document.addEventListener("touchstart", function(event){ 

    alert('touchstart'); 

}); 

document.addEventListener("touchend", function(event){ 

    alert('touchend'); 

}); 

Однако события прикосновения не срабатывают на родительском уровне ... Но журнал консоль работает нормально, так что собирание IFrame TouchMove, но не кажется TouchEvent часть, не собирается работать.

Короче говоря, мне нужно иметь возможность запускать события, как если бы пользователь коснулся родительской страницы, когда они взаимодействуют с iframe.

ответ

1

Вы не отправляете мероприятие. Я также должен был создать его как MouseEvent.

document.addEventListener("touchstart", function (event) { 
 
    alert('touchstart'); 
 
}); 
 
// Fix 1 (test in mobile, it may need to be feature detected) 
 
// Or not work reliably across browsers, some clients will need TouchEvent 
 
var e = document.createEvent('MouseEvent'); 
 
e.initUIEvent('touchstart', true, true); 
 
//Fix 2 
 
document.dispatchEvent(e);

+0

Еще не срабатывает мои события ... Что должна быть полный код, чтобы стрелять сенсорное событие перемещения по документу? – Cameron

+0

@Cameron Кажется, что работает, я обновил ответ на примере –

+0

@JuanMendes: Является ли ваш iframe в другом домене, чем ваш родительский? Здесь может быть задействован вопрос CORS. – Kwame