仅在闪光灯中通过鼠标滚轮滚动。通过鼠标滚轮阻止默认浏览器滚动

时间:2013-01-04 21:15:56

标签: flash firefox mousewheel preventdefault stoppropagation

我的firefox自动更新到FF17,MAC,OSX 10.8.2后发现此问题。
有什么建议和提示吗?

问题:
我用javascript preventDefault();和stopPropagation();要通过鼠标滚轮取消默认滚动事件,它可以正常工作。 但是当鼠标悬停在flash对象上并通过鼠标滚轮滚动时,这不起作用。

实际上,我有一个可以通过鼠标滚轮控制的闪光灯面板。 flash对象嵌入在html文档的中间, 您需要在浏览器中向下滚动才能查看Flash内容。当我专注于Flash内容并通过鼠标滚轮滚动时, 浏览器也在滚动并使flash内容不可见。

重现问题:
1.在html的最底部放置一个简单的空白flash对象。确保您需要向下滚动才能在浏览器中查看Flash对象。

  1. 为了便于解释,您可以使用此javascript停止页面上的所有鼠标滚轮活动: (如果需要,请按“空格键”到达html底部的flash对象)

    window.addEventListener('DOMMouseScroll',wheel,false); window.addEventListener('mousewheel',wheel,false);
    window.addEventListener('MozMousePixelScroll',wheel,false); window.addEventListener('wheel',wheel,false);
    功能cancelEvent(e) {     e = e? e:window.event;     if(e.stopPropagation)e.stopPropagation();     if(e.preventDefault)e.preventDefault();     e.cancelBubble = true;     e.cancel = true;     e.returnValue = false;     返回false; }

  2. 鼠标在flash对象上滚动并使用滚轮,您会发现浏览器也在滚动。

  3. 预期结果:
    鼠标滚轮仅控制flash对象,但不能通过上述脚本控制浏览器。

3 个答案:

答案 0 :(得分:1)

我遇到过一个网站,其中有一个flash对象中的整个订单处理,但该对象是固定大小,不适合我的笔记本电脑屏幕。他们禁止在flash对象对象内外滚动,即整个页面。绝对令人愤怒的用户体验,我必须将鼠标指针移动到最右边,并使用浏览器滚动条而不是鼠标滚轮。此网站“https://internetorder.dominos.com.au/estore/”(通过主页的任何页面)的行为是否与您相同,如果是这样,它可能会为您提供一种方式让您对用户造成冲击。不是说我以任何方式赞同这一点。

答案 1 :(得分:0)

你需要使用javascript来覆盖默认的鼠标滚轮行为。 第一个链接在不同的浏览器中有很多例子,但基于第二个例子我在现代IE中的实现更好运。

http://www.stoimen.com/blog/2009/07/01/javascript-disable-mouse-wheel/

http://solidlystated.com/scripting/javascript-disable-mouse-wheel/

但我不确定你为什么需要这个。如果你使flash应用程序与屏幕大小相同并缩放内部内容,则无法滚动页面。只需将闪光灯的宽度和高度设置为100%

答案 2 :(得分:0)

我创建了一个小型lib,可以为您处理所有事情。它在默认的flash播放器插件,Pepper闪存和MAC-OS上运行完美(据我测试)。而且您不需要将任何.js文件添加到HTML文件夹

GIhub repo