1. 概述
本文将介绍各类超级链接使用过程中遇到的问题和解决方案。
2. 超链到帮助文档无效
问题描述
网页链接的 URL 设置为帮助文档的地址:https://help.fanruan.com/finereport/。
报表预览时点击超链,帮助文档网页内容无法正常显示,如下图所示:
原因分析
报表解析网页链接的时候会自动加上时间戳,帮助文档的链接增加时间戳之后跳转有问题,目前未发现除了帮助文档之外有问题的链接。
解决方案
设置帮助文档超链时,不要用网页链接的方式,改用JavaScript脚本的方式,代码如下:
window.open("https://help.fanruan.com/finereport/")
3. 动态参数问题
3.1 动态参数为数组时报错
问题描述
当「动态参数」类型的超级链接里面的参数为如下图所示的数组类型时。
点击该超级链接会出现报错信息:「错误代码:11300001 数据集配置错误」,如下图所示:
原因分析
因为在超链过程中会将数组类型的动态参数转化为字符串类型,故而会导致这样的错误。
解决方案
在添加超级链接类型为「动态参数」时,不可以使用数组类型的动态参数,需要 用 joinarray 函数将数组转换为字符串
3.2 动态参数为空时日志报错
问题描述
例如文档 多列动态排序 中的模板,当报表中设置了动态参数 $asc,其值为「单元格」,又使用了 $a[!0] (获取扩展后单元格值)这种类型的公式,设计器日志中会出现报错:ERROR [standard] 错误的描述为: [!0]。如下图所示:
注:不影响模板的正常使用。
原因分析
因为当页面初始化预览时,动态参数 $asc 为空,如果没有设置 asc 参数的默认值,则需要点击超链后才被赋值。所以公式解析失败,就会报错。
解决方案
可在模板参数中设置一个相同名称的参数,并给参数设置一个默认值(任意一个超链的单元格),如下图所示:
因为不影响模板的正常使用,不介意日志中报错信息则可以不做改变。
3.3 动态参数设置特效点击后回到第一页
问题描述
模板制作是通过动态参数来实现展开与折叠效果,点击后,页面回跳回第一页。
原因分析
超链动态参数点击之后会全局刷新,所以相当于又进行了一次预览操作,因此返回第一页。
解决方案
改为数据分析预览,或修改动态参数的设置。
4. 去除超级链接下划线
问题描述
单元格添加超级链接后,会自动有个下划线,如下图所示,那么如何去掉这条线呢?
解决方案
这个下划线其实就是单元格里面文字加了下划线,只需要去掉这个文字下划线就行。
去掉下划线的效果如下图所示:
5. 日期公式作为超链参数时的返回值
日期公式作为超链参数被传参出去时,将会传出 Date 类型原值,也就是带有时分秒的值,格式为:yyyy-mm-dd hh:mm:ss
但是如果日期公式直接在单元格中展示,预览时单元格转 html,会将 Date 类型转化成字符串,会去掉时分秒,格式为:yyyy-mm-dd
例如:一张模板里设置了超链,链接到另一张模板,参数是公式today()
另一张模板里,一个单元格里直接写公式today(),一个单元格里引用这个参数。
最终超链跳转后,预览效果如下图所示
6. 使用超链链接-网页链接打开对话框无法正常跳转
问题描述
网页链接中的地址可以在浏览器直接打开访问,但该地址挂载到frm的图表超链接上后,预览frm图表,点击超链接区域,弹出被拒绝的对话框。
原因分析
浏览器和服务器的 iframe 限制。访问站点设置X-Frame-Options,确保网站不被嵌入其他的站点中。模板页以及弹出的对话框就是不同源,所以对话框访问此类网页链接,无法正常访问。
解决方案
1)不使用对话框打开,用超链到新页面打开,此方法安全性高,不需要关闭各项配置。
2)关闭 FineReport 工程安全管理的 Security Headers,另外需要被对话框访问的各应用服务器都要删掉 X-Frame-Options(目前不能确认其他非 FineReport 应用删掉这项配置后的安全性风险)