解决flash和浏览器滚轴同时被监听问题。

本文介绍了一种自定义鼠标滚轮处理函数的方法,并提供了HTML和AS3代码示例。该方法可在不同浏览器环境下(如IE和Firefox)实现对滚轮事件的统一处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载地址:  http://blog.youkuaiyun.com/xiang08/article/details/4541538


html代码:

    <html>  
    <head>  
    <title>自定义鼠标滚轮的处理函数</title>  
    <mce:script type="text/javascript"><!--  
    var OsObject = function ()  
    {  
      var ua = navigator.userAgent.toLowerCase();  
      var isOpera = ua.indexOf("opera") > -1,  
          isIE = !isOpera && ua.indexOf("msie") > -1,  
          isIE7 = !isOpera && ua.indexOf("msie 7") > -1;  
      return {  
       isIE : isIE,  
       isIE6 : isIE && !isIE7,  
       isIE7 : isIE7,  
       isFirefox : ua.indexOf("firefox")>0,  
       isSafari : ua.indexOf("safari")>0,  
       isCamino : ua.indexOf("camino")>0,  
       isGecko : ua.indexOf("gecko/")>0  
      };  
    }();  
    function disWheel(evt)  
    {  
      if(!evt) evt=window.event;  
      var delta=0;  
      if(OsObject.isFirefox)  
      {  
        delta = -evt.detail/2;  
        //alert(delta); // 可以调用Flash接口,让flash响应滚轮  
        if(evt.preventDefault)  
          evt.preventDefault();  
        evt.returnValue = false;  
      }  
      else if(OsObject.isIE)  
      {  
        delta = evt.wheelDelta/60;  
        //alert(delta); // 可以调用Flash接口,让flash响应滚轮  
        return false;  
      }  
    }  
    EnableWheelScroll = function (enable)  
    {  
      if(enable)  
      {  
        if(OsObject.isFirefox)  
        {  
          window.removeEventListener('DOMMouseScroll', disWheel, false);  
        }  
        else if(OsObject.isIE)  
        {  
          window.onmousewheel = document.onmousewheel = function(){return true};  
        }  
      }  
      else // disable  
      {  
        if(OsObject.isFirefox)  
        {  
          window.addEventListener('DOMMouseScroll', disWheel, false);  
        }  
        else if(OsObject.isIE)  
        {  
          window.onmousewheel = document.onmousewheel = disWheel;  
        }  
      }  
    }  
    // --></mce:script>  
    </head>  
    <body>  
    <p>123<p>123<p>  
    <a href="#" mce_href="#" onClick="EnableWheelScroll(true);">enable</a> <p>  
    <a href="#" mce_href="#" onClick="EnableWheelScroll(false);">disable</a> <p>  
    <div id="space" style="height:800;"></div>  
    </body>  
    </html>  

as3代码:

    public function onMouseOver(evt:MouseEvent): void  
    {  
      ExternalInterface.call("EnableWheelScroll", false);  
    }  
      
    public function onMouseOut(evt:MouseEvent): void  
    {  
      ExternalInterface.call("EnableWheelScroll", true);  
    }  

不过,这样也是有缺陷的,当flash设置为透明(wmode="transparent"),且flash全屏播放时,这里自定义的滚动函数很可能会不响应。这时需要在舞台上注册MouseEvent.MOUSE_WHEEL事件处理函数。
    如果flash不需要透明属性,则可以直接在舞台上注册MouseEvent.MOUSE_WHEEL事件处理函数,然后使用js禁用浏览器的滚动条即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值