我正在做一个Firefox插件,通过Youtube或Vimeo的嵌入式iframe视频拦截滚轮鼠标事件。 我让它在正常的YT / vimeo页面上工作(将监听器附加到窗口,然后查看event.target以识别视频),问题在于<的iframe> tag:它没有拦截" wheel"事件(例如"鼠标悬停"有效)。
即。页面中有类似的HTML代码:
<iframe src="//player.vimeo.com/video/89055435/fallback?noscript" frameborder="0"></iframe>
这有效:
iframes[i].addEventListener("mouseover", func, false);
&#34; wheel&#34;我做了类似的事情:
iframes[i].addEventListener("wheel", myFunc, false);
or
iframes[i].contentWindow.addEventListener("wheel", myFunc, false);
没有结果。我也尝试过捕捉而不是冒泡:没什么。
我也尝试了这个:
window.addEventListener("wheel", myFunc, false);
这适用于页面的每个对象,但iframe本身没有任何内容。 我还使用侦听器创建了一个setTimeout,以查看iframe是否未完全加载:没有任何更改。
http://jsfiddle.net/chtNP/121/
那么,如果我在iframe上面有一个视频,或者如何从窗口获取所有轮子(包括iframe上的轮子),我应该怎么做轮子事件呢?
答案 0 :(得分:0)
我有同样的问题,这是我的解决方案:
var iframe = document.querySelector('iframe');
iframe.contentDocument.addEventListener('wheel', event =>
iframe.dispatchEvent(new WheelEvent('wheel', event))
);
这会将iframes文档中的每个wheel
- 事件转发给父文档中的iframe
元素。
注意:
event
属性isTrusted