【帆软FR】窗口变化自适应-JS通用方案

楼主
分享常见解决方案,仅供个人参考使用!
一、场景汇总

  • tab切换、反复刷新等操作,导致frm的自适应异常,出现空白块.
  • 浏览器缩放,报表块单元格出现多余边框线
  • 浏览器窗口发生变化,由于自适应影响图表重新绘制,造成坐标轴显示顺序异常

二、解决方案
1、决策报表



参考js:
  1. //给表单body添加初始化js事件:
  2. $(window).resize(function() {
  3.         var width = FR.windowWidth;
  4.         var height = FR.windowHeight;
  5.         var from = _g().getWidgetByName('form')
  6.         if (form.oriWidth === width && form.oriHeight === height) {
  7.                 return;
  8.         }
  9.         form.oriWidth = width;
  10.         form.oriHeight = height;
  11.         form.loadContentPane(true);
  12. });
复制代码

2、普通报表




参考js:
  1. //分页预览添加加载结束事件:
  2. $(window).resize(function() {
  3.         window.location.reload()
  4. });
  5. //如果还有滚动条,可以加下面这句隐藏
  6. /*
  7. setTimeout(function() {
  8.         $('#content-container').css("overflow", "hidden");
  9. }, 100)*/
复制代码

三. 额外场景补充

如果决策报表使用了上述js,同时写了报表块滚动的JS,则滚动JS会被上述JS所影响,导致滚动速度在缩放后越来越快,即使添加了清除定时器的语句也不行。解决方案为修改滚动JS,格式如下:
  1. setTimeout(function() { //隐藏报表块report0的滚动条(此报表块名为report0,根据具体情况修改)        
  2.         
  3.         $("div[widgetname=REPORT1]").find(".frozen-north")[0].style.overflow = "hidden";
  4.         $("div[widgetname=REPORT1]").find(".frozen-center")[0].style.overflow = "hidden";
  5. }, 200);
  6. window.flag = true;
  7. if (window.interval) {
  8.         clearInterval(window.interval);
  9. } //鼠标悬停,滚动停止  

  10. setTimeout(function() {
  11.         $("div[widgetname=REPORT1]").find(".frozen-center").mouseover(function() {
  12.                 window.flag = false;
  13.         }); //鼠标离开,继续滚动         
  14.         
  15.         $("div[widgetname=REPORT1]").find(".frozen-center").mouseleave(function() {
  16.                 window.flag = true;
  17.         });
  18.         var old = -1;
  19.         if (window.interval) {
  20.                 clearInterval(window.interval);
  21.         }
  22.         window.interval = setInterval(function() {
  23.                 if (window.flag) {
  24.                         currentpos = $("div[widgetname=REPORT1]").find(".frozen-center")[0].scrollTop;
  25.                         if (currentpos == old) {
  26.                                 $("div[widgetname=REPORT1]").find(".frozen-center")[0].scrollTop = 0;
  27.                         } else {
  28.                                 old = currentpos; //以25ms的速度每次滚动1.5PX                  
  29.                                 
  30.                                 $("div[widgetname=REPORT1]").find(".frozen-center")[0].scrollTop = currentpos + 1.5;
  31.                         }
  32.                 }
  33.         }, 25);
  34. }, 1000);
复制代码

编辑于 2021-7-5 22:44  
分享扩散:

沙发
发表于 2021-7-6 08:22:18

回帖奖励 +20

666!!!
板凳
发表于 2021-7-6 13:58:02

回帖奖励 +20

可以
地板
发表于 2021-7-7 16:13:47

回帖奖励 +20

让我康康,感觉发现了不得了的东西
5楼
发表于 2021-7-7 16:39:29

回帖奖励 +20

这真的是一个特别实用的js,点赞。。。。。。
6楼
发表于 2021-7-8 09:03:57

回帖奖励 +20

7楼
发表于 2021-7-8 09:29:52

回帖奖励 +20


优秀
8楼
发表于 2021-7-9 17:26:01

回帖奖励 +20

厉害厉害
9楼
发表于 2021-7-10 10:06:05

回帖奖励 +20

正遇到这个问题,测试了一下,好用,可以避免这些乱七八糟的问题了
10楼
发表于 2021-7-10 14:46:29

回帖奖励 +20

收藏咯
11楼
发表于 2021-7-11 12:35:28

回帖奖励 +20

收藏了哦
12楼
发表于 2021-7-11 14:47:14
13楼
发表于 2021-7-11 21:57:48
666
14楼
发表于 2021-7-13 08:33:38
66666666
15楼
发表于 2021-7-13 14:16:17
666呀
16楼
发表于 2021-7-15 09:55:42
纯小白。请问下,这串JS代码加在什么地方使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表