/*=============================================
author:eksij
date:2022-06-23
自动滚动鼠标移入停止滚动,支持无缝滚动
__scoroll(widgetname,是否自动滚动(2为无缝),移动速度,间隔时间,是否使用滚动条)
=============================================*/
function __SCROLL(obj,S,m,t,b){
if(typeof(obj)==='undefined'){FR.Msg.alert("自动滚动事件","至少一个widgetname 多个请用逗号分割,或直接用数组分割");return}
if(typeof(obj)!=='object'){obj=obj.split(',')}//把obj转为数组
S=isNaN(parseInt(S))?0:parseInt(S);//将S转为格式化,有0,1,2...
m=isNaN(parseInt(m))?1:parseInt(m);//将移动的距离格式化
t=isNaN(parseInt(t))?100:parseInt(t);//将间隔时间格式化
b=isNaN(parseInt(b))?0:parseInt(b);//将是否使用滚动条格式化
setTimeout(function(){//因为执行时可能还没加载完成,所以延时1秒
//var $obj = $('[widgetname="'+obj.join('"],[widgetname="')+'"]');
$.each(obj,function(i,n){//遍历数组所有的组件
n = '[widgetname="'+n.toUpperCase()+'"]';//把组件名称转为大写
var $this = $(n).find('.frozen-center');//命名需要滚动的组件
$(n).data({flag:1,old:-1});//为每个组件添加data,flag是鼠标悬停,old是否滚动到底
$this.addClass('noscroll');//给滚动区域增加无滚动条的样式
if(b){$this.addClass('innerbox');}else{$this.css('overflow','hidden');}//根据是否需要滚动条增加样式
$(n).find('.frozen-north').css('overflow','hidden');//标题区域隐藏滚动条
$this.hover(function(){//鼠标悬停动作
$(n).data('flag',0);
},function(){
$(n).data('flag',1);
});
if(S){//需要滚动时
if(S==2&&$this.find('.x-table').height()>=$this.height()){//为2是无缝衔接,克隆原数据
$this.find('.x-table tbody').append($this.find('.x-table tbody tr').clone());
}
setInterval(function() {//按时间t执行
if($(n).data('flag')){//判定各区域是否有鼠标悬停
var $s = $this.scrollTop();//命名当前的滚动条位置
if(S==1){//是否移动为1时,滚动到底部,返回0位置
$this.scrollTop(($s===$(n).data('old'))?0:($s+m));
}
if(S==2){//是否移动为2时,滚动到区域高度1半-移动距离m的位置时,返回0位置
$this.scrollTop(($s>=$this.find('.x-table').height()/2-m)?0:($s+m));
}
$(n).data({old:$s});
}
},t);
}
$(n).find('.x-table').each(function(){//纠正表格宽度为div的宽度,主要是在修改了浏览器宽度后,表格不改变
$(this).width($(this).parent().width())
});
});
},1000);
}
这个可以。
|