找回密码
 立即注册

QQ登录

只需一步,快速开始

viperous_devil
金牌服务用户   /  发表于:2019-2-14 11:00  /   查看:5353  /  回复:17
图片.png538324279.png 附件是一个视频,我基本同时进行点开两个  spreadJs 的界面,结果只有一个能出来,另一个无法正常显示,但是如果一个刷新出数据之后再刷新第二个,则不会出问题。图片是同时进行的时候报的错误。能看下是为什么吗? 如何解决呢

VID_20190214_104518.rar

8.36 MB, 下载次数: 176

17 个回复

正序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-2-20 10:12:29
18#
不客气,感谢您的反馈,本帖我结贴了,有新的问题欢迎发新贴交流~
回复 使用道具 举报
viperous_devil
金牌服务用户   /  发表于:2019-2-20 09:19:13
17#
KevinChen 发表于 2019-2-19 11:13
您好,我又调试了一段代码,您可以试试:

代码内容:

非常感谢,问题解决了!
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-2-19 11:13:19
16#
您好,我又调试了一段代码,您可以试试:

代码内容:

  1. var intervalId = setInterval(function () {
  2.     if(spread){
  3.         // TeamcategoryOitTable
  4.         // TeamcategorySalesTable
  5.         var width = $("#TeamcategoryOitTable").find("canvas").width();
  6.         var height = $("#TeamcategoryOitTable").find("canvas").height();
  7.         if(width < 100 && height < 100){
  8.             spread.refresh();
  9.         }else{
  10.             clearInterval(intervalId);
  11.         }
  12.     }
  13. }, 500);
复制代码


添加位置:

http://139.224.169.17:8559/targe ... /TeamcategoryOit.js

第237行,layer.closeAll('loading'); 之后。

同理,把代码中的id改为TeamcategorySalesTable后,加到文件:

http://139.224.169.17:8559/targe ... eamcategorySales.js

的相同位置,239行即可。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-2-18 14:39:45
15#
viperous_devil 发表于 2019-2-18 13:52
实验了下,加在这里并不行

好的,我这边搭个环境,远程改一下试试,可能需要时间比较久,帖子状态暂时改为“未处理”。
回复 使用道具 举报
viperous_devil
金牌服务用户   /  发表于:2019-2-18 13:52:47
14#
KevinChen 发表于 2019-2-18 10:22
您好,您项目中控制tab页的代码在这个路径下找:

http://139.224.169.17:8559/targetsetting/frame/fron ...

实验了下,加在这里并不行
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-2-18 10:22:57
13#
您好,您项目中控制tab页的代码在这个路径下找:

http://139.224.169.17:8559/targetsetting/frame/front/b.tabs.js

b.tabs.js中,第88行这个函数,如图所示:

image.png24924925.png

在红色箭头所示的位置,这句代码之后,return之前,添加如下代码:

  1. var spread = GC.Spread.Sheets.findControl("TeamcategoryOitTable");
  2. if(spread){spread.refresh();}
复制代码


我这边没有配置拦截注入的环境,所以你需要在你源码中改动,然后测试一下。

注意,我贴出的代码,findControl中接收的id是指当前标签页中SpreadJS所在Div的ID,

这个值不应该是写死的,需要传入或者为div添加一个属性等方法来获取。
回复 使用道具 举报
viperous_devil
金牌服务用户   /  发表于:2019-2-15 22:45:00
12#
KevinChen 发表于 2019-2-15 17:53
您好,我截图演示一下。当您页面上Sp出现加载失败时,如图:

很尴尬。那个,在下作为后端程序员,前端技术太过浅薄,找了大半天找不到对应的位置。能否帮在下找到这个两个位置,我测试下在相关位置替换上是否有效。万分感谢
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-2-15 17:53:27
11#
您好,我截图演示一下。当您页面上Sp出现加载失败时,如图:

image.png185141295.png

这时实际上SpreadJS已经加载了,只是由于加载时框架的iframe中初始化尚未完成,

因此导致尺寸错误,以及一些元素被覆盖了。

此时可以先获取到页面的spread实例,然后调用refresh()即可。如图:

image.png713405151.png

严谨一点的话,在执行refresh()前先判断一下spread实例是否为空。

现在的问题在于执行这两句代码的时机,可以选择在框架iframe初始化完毕后调用框架的加载完毕的回调函数,

或者在用户点击标签页时时执行,如图:

image.png983292541.png
回复 使用道具 举报
viperous_devil
金牌服务用户   /  发表于:2019-2-15 17:36:36
10#
KevinChen 发表于 2019-2-15 11:45
您好,问题原因应该是您的框架中,iframe中的body设置了overflow: hidden;

另外在框架标签页的尺寸计算 ...

能找到问题很好,但是我看到您写的东西,并不明白到底写到哪里,能给详细点吗?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部