图片大小随鼠标滚动而改变的兼容IE和Firefox的代码

作者:pwqzc 来源:pwqzc 的博客 日期:2008-6-25

搞了半天,终于搞定,但是在firefox下面显示效果不是很好,代码如下:(后面附上注明几点)

<html>
<head>
    <title>无标题页</title>
    <script language="javascript">
      if (window.addEventListener)
      {
         window.addEventListener('DOMMouseScroll', wheel, false);//给firefox添加鼠标滚动事件
      }
      //else
      //{
        // window.onmousewheel = document.onmousewheel = wheel;//ie
      //}
     
      function wheel(event)
      {
         var delta = 0;
         var div = document.getElementById("div1");
         if (!event) /**//* For IE. */
         {
            event = window.event;
         }
         if (event.wheelDelta)
         {
            //让一个是IE
            //if(event.srcElement.tagName=="IMG" && div.contains(event.srcElement))
            //{
               //event.srcElement.width+=event.wheelDelta/15;
              // return false;
            //}
         }
         else if (event.detail)
         {
            //如果是firefox
            var allImg = div.getElementsByTagName("IMG");
            var isThis=false;//现判断鼠标中仑的元素是不是包含在那个div里面
            for(i=0;i<allImg.length;i++)
             {
                if(allImg[i]==event.target)
                {
                   isThis=true;
                }
             }
             if(isThis && event.target.tagName=="IMG")
             {
                event.target.width=event.target.width+event.detail*12;
                event.returnValue = false;
             }
          }
          return true;
        }
        function bbimg(o)
        {
           var zoom=parseInt(o.style.zoom, 10)||100;
           zoom+=event.wheelDelta/12;
           if (zoom>0) o.style.zoom=zoom+'%';
           return false;
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <div id="div1"
        <table class="tablebody2" style="table-layout:fixed;" border="0" width="90%">
           <tr>
               <td>
                  <img id="11" src="UserFolder/00.jpg" onclick="javascript:window.open(this.src);"
style="cursor: pointer;" onload="javascript:if(this.width>screen.width-500)this.style.width=screen.width-500;"
onmousewheel="return bbimg(this)" border="0" />
               </td>
           </tr>
         </table>
        </div>
    </form>
</body>
</html>

在上面的代码里,我首先把判断IE捕捉IE鼠标滚动事件的代码去掉了,因为如果不去掉效果和去掉以后直接写
onmousewheel="return bbimg(this)"的运行效果要相差很远;
还有一点就是方了个table,加上了style="table-layout:fixed;属性,如果不用table用div我找不到任何样式来控制当这个图片月滚越大的时候会把所有的页面样式都搞坏;

页面图片效果可以在一诺操盘手网预览!

相关文章