放到电视机上后有时候跑马灯效果会失效。

因老板要求,给大屏的三个表单加了跑马灯效果,在自己的电脑上打开帆软决策平台跑马灯效果全都有效,但是在电视机上打开,其中有一个表单的跑马灯会失效,有时候多刷新几次又都可以了。


这个电视每天下班后要关闭的,无法一直开着,每次上班都要刷新好几遍很麻烦,有时候刷新了还没用,这个该如何解决。


下面是跑马灯的JS,用的某文档分享。

var reportarray = ["REPORT1","REPORT0","REPORT4"];
//根据实际情况设置跑马灯报表块的名称,名称大写。
window.fobject = {};
for (i = 0; i < reportarray.length; i++) {
	fobject["flag" + i] = true;
}

for (i = 0; i < reportarray.length; i++) {
	$("div[widgetname='" + reportarray[i] + "']").ready(function() {
		//function
		var index = i;
		var part;
		var self = '$("div[widgetname="' + reportarray[i] + '"]")';
		var name = reportarray[i];
		console.log(name)
		setTimeout(function() {
			if ($('.scrollDiv').length == 0)
			//判断是否安装了自定义滚动条插件
			{

				if ($("div[widgetname=" + name + "]").find(".frozen-center").length == 1)
				//没安装,报表块有没有设置冻结
				{
					part = $("div[widgetname=" + name + "]").find(".frozen-center");
					//设置了冻结时
					$("div[widgetname=" + name + "]").find(".frozen-north").css("overflow", "hidden");
					$("div[widgetname=" + name + "]").find(".frozen-north").css("overflow-y", "hidden");
				} else {
					part = $("div[widgetname=" + name + "]").find(".reportContent");
					//没设置冻结时
				}
			} else {

				part = $("div[widgetname=" + name + "]").find(".scrollDiv");
				//如果安装了插件,所有元素都是.scrollDiv
			}
			part.css("overflow", "hidden"); //去除滚动条
			part.css("overflow-x", "hidden");
			part.css("overflow-y", "hidden"); //兼容IE的去除滚动条
			part.mouseover(function() {
				fobject["flag" + index] = false;
			});
			//鼠标离开,继续滚动 
			part.mouseleave(function() {
				fobject["flag" + index] = true;
			});
			var old = -1;
			setInterval(function() {
				if (fobject["flag" + index]) {
					currentpos = part[0].scrollTop;
					if (currentpos == old) {
						part[0].scrollTop = 0;
					} else {
						old = currentpos;
						//以25ms的速度每次滚动1.5PX 
						part[0].scrollTop = currentpos + 1.5;
					}
				}
			}, 100);
		}, 3000)
	})
}


FineReport zxc3153328 发布于 2020-5-26 10:38
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
zxc3153328Lv3见习互助
发布于2020-5-26 11:20

询问了技术支持后已解决,将3000调大,可能是因为电视机上表单模块加载太慢,3秒后调用的函数无法生效。

最佳回答
0
L大大Lv7高级互助
发布于2020-5-26 10:40

setTimeout(function() {

    var $report = $("div[widgetname=REPORT0]");

    //获取对应report的div元素

    var $scroll = $report.find(".reportContent");

    //获取对应report的div元素的滚动块元素,冻结为#frozen-center,未冻结且未安装自定义滚动条插件为.reportContent,未冻结且安装了自定义滚动条插件为.scrollDiv

    var flag = window.flag0;

    //设置全局变量flag,每个报表块需保证各不相同

    $report.find("#frozen-center").css('overflow-x', 'hidden');

    $report.find("#frozen-center").css('overflow-y', 'hidden');

    $report.find("#frozen-north").css('overflow-x', 'hidden');

    $report.find("#frozen-north").css('overflow-y', 'hidden');

    //冻结情况下隐藏滚动条

    $report.find(".reportContent").css('overflow-y', 'hidden');

    $report.find(".reportContent").css('overflow-x', 'hidden');

    //非冻结情况下隐藏滚动条

    flag = true;

    //定义全局参数flag,用来控制滚动的暂停和继续 (表单flag注意重复) 表单有多个滚动的时候,flag不能重复,不能重复,不能重复,不能重复,不能重复,不能重复,不能重复,不能重复,不能重复,不能重复,不能重复,不能重复

    $scroll.mouseover(function() {

        flag = false;

    })

    //鼠标悬浮,滚动停止

    $scroll.mouseleave(function() {

        flag = true;

    })

    //鼠标离开,继续滚动

    var old = -1;

    setInterval(function() {

        if (flag) {

            currentpos = $scroll[0].scrollTop;

            //获取距顶部距离

            if (currentpos == old) {

                $scroll[0].scrollTop = 0;

                //若已到达底部,则重置

            } else {

                old = currentpos;

                $scroll[0].scrollTop = currentpos + 1.5;

                //若未到达底部,则向下移动1.5像素

            }

        }

    }, 25);

    //以25ms的频率执行

}, 500);


  • 2关注人数
  • 684浏览人数
  • 最后回答于:2020-5-26 11:20
    请选择关闭问题的原因
    确定 取消
    返回顶部