跨浏览器Ext版网页漂浮广告JavaScript函数

今天浙大门户系统提出一个需求,用户登录后希望网页上可以漂浮一个小图片,提醒同学可以做在线咨询,我一听,这不就是本人最讨厌的网页广告吗,可没办法,人家给钱,你就是奴才。
在网上一搜,这类脚本铺天盖地,基本是一样的,纯JS写成,拷过来一用,静态页面时IE和Firefox都正常,改成JSP后在IE下还好,Firefox下就不行了,该飘的东西一动不动,改了半天没改出来,想想咱们门户每次加载都带上了Ext库,咱们也别浪费了,我就用Ext写了个跨浏览器的漂浮JavaScript函数,在JSP下通过IE、Firefox及Safari测试,Chrome应该也没问题。函数源码如下:

function floatInfo(id, distance, per){
   var flagH = 0;
   var flagW = 0;
   var distance4L = distance;
   var avaiH = document.body.clientHeight - id.getHeight();
   var avaiW = document.body.clientWidth - id.getWidth();
   var task = {run: function(){
                        id.setTop(id.getTop() + distance);
                        flagH += distance;
                        if(flagH >= avaiH || flagH <= (-avaiH)) {
                                distance = (-distance);
                                flagH = 0;
                        }
                       id.setLeft(id.getLeft() + distance4L);
                       flagW += distance4L;
                       if(flagW >= avaiW || flagW <= (-avaiW)) {
                       distance4L = (-distance4L);
                       flagW = 0;
                       }
                   },
                  interval: per
                }
  Ext.TaskMgr.start(task);
}

传入参数id代表网页上要漂浮元素的id;distance是数字,代表一次移动多少像素;per也是数字,代表多长时间移动一次,其中1000代表1秒,数字越小移动越快。使用方式如下:

<script type="text/javascript">
   Ext.onReady(function(){
      var id = Ext.get('float_dis');
      floatInfo(id,10,300);
   })
</script>

虽然用Ext写这种东西是有点杀鸡焉用牛刀的味道,但谁叫本人对跨浏览器的脚本编程这么差呢。

留下评论