2015-02-18 6 views
0

Я делаю Firefox-аддон, чтобы перехватывать события мыши мыши над встроенным видеоизображением iframe Youtube или Vimeo. Я получил это, работая над нормальными страницами YT/vimeo (прикрепляя слушателя к окну, а затем смотря на event.target, чтобы идентифицировать видео), проблема связана с тегом iframe> <: он не перехватывает «колесо», event (пока, например, работает «mouseover»).vimeo/YouTube iframe video wheel event

т.е. есть подобный HTML код на странице:

<iframe src="//player.vimeo.com/video/89055435/fallback?noscript" frameborder="0"></iframe> 

Это работает:

iframes[i].addEventListener("mouseover", func, false); 

Для "колесо" я подобное:

iframes[i].addEventListener("wheel", myFunc, false); 
or 
iframes[i].contentWindow.addEventListener("wheel", myFunc, false); 

Нет результата , Я попытался также захватить, а не пузыряться: ничего.

Я попытался также это:

window.addEventListener("wheel", myFunc, false); 

Это работает над каждым OBJ страницы, но ничего более самого фрейм. Я сделал также setTimeout со слушателем, чтобы увидеть, не был ли iframe полностью загружен: ничего не меняется.

http://jsfiddle.net/chtNP/121/

Итак, что я должен сделать, чтобы иметь свое событие колесика, когда я над IFRAME с видео внутри него или как получить все колеса из окна в том числе через IFRAME?

ответ

0

У меня была такая же проблема, вот мое решение:

var iframe = document.querySelector('iframe'); 

iframe.contentDocument.addEventListener('wheel', event => 
    iframe.dispatchEvent(new WheelEvent('wheel', event)) 
); 

это будет пересылать каждый wheel -Event на документе IFrames к iframe элемента в вышестоящем документе.

Примечания:

  • это не представляется возможным «recicle» в случае, она должна быть клонирована
  • в WheelEvent конструктор копий много, но не все из оригинального event S Свойства
  • в клонированное событие не является isTrusted
  • пересылка события прикреплена к фреймерам документ. Он будет работать только до тех пор, пока документ не изменится. Таким образом, вы должны запустить вышеуказанный код после загрузки окончательного документа.
  • Доступ к документу iframes может привести к перекрестным проблемам