现在的位置: 首页 > 综合 > 正文

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

2013年10月08日 ⁄ 综合 ⁄ 共 1824字 ⁄ 字号 评论关闭

转载地址:  http://blog.csdn.net/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禁用浏览器的滚动条即可。

抱歉!评论已关闭.