嵌入浏览器的SSRS报表JS跳转链接失效问题咨询
将SSRS报表嵌入浏览器页面后,在报表图片的「操作」中配置「转到URL」的JavaScript代码:
javascript:void(window.open('https://p21.castertech.com/Prophet21/index.html#/window/m_customermasterinquiry?customer_id=" & parameters!CustID.value & "','_blank'))直接在浏览器命令行测试带具体参数(如
customer_id=50)的JS代码可正常运行,但点击报表图片时无任何反应。同时,文本框属性中设置的同类跳转脚本:javascript:void(window.open('https://p21.castertech.com/Prophet21/index.html#/window/m_orderentry?order_no=" & Fields!order_number.Value & "','_blank'))也无法生效。使用Chrome浏览器(已启用JavaScript),SSRS版本为15。
排查步骤:
检查SSRS安全协议限制
SSRS 15(2019版)默认限制跳转协议,需确认javascript:是否在允许列表中。可通过SSRS配置管理器进入「Report Server Web Service」的安全设置,添加javascript到允许协议;或修改RSReportServer.config文件,找到<AllowedProtocols>节点,确保包含javascript。修正参数拼接语法
原脚本存在引号转义错误、参数引用格式问题:- SSRS中引用参数/字段需用表达式语法直接嵌入,无需
&拼接;参数名首字母需大写(Parameters!CustID.Value而非parameters!CustID.value) - 去掉多余的HTML转义引号
",直接用字符串拼接参数
修正后的示例:
图片跳转脚本:
javascript:void(window.open('https://p21.castertech.com/Prophet21/index.html#/window/m_customermasterinquiry?customer_id=' + Parameters!CustID.Value,'_blank'))文本框跳转脚本:
javascript:void(window.open('https://p21.castertech.com/Prophet21/index.html#/window/m_orderentry?order_no=' + Fields!order_number.Value,'_blank'))- SSRS中引用参数/字段需用表达式语法直接嵌入,无需
检查iframe嵌入限制
若报表嵌入在iframe中,Chrome的安全策略会阻止弹窗。需给iframe添加allow-popups属性:<iframe src="你的SSRS报表地址" allow-popups></iframe>同时确认目标网站的
X-Frame-Options、Content-Security-Policy响应头,是否允许被嵌入及弹窗。简化脚本测试定位问题
先使用无参数的最简脚本测试:javascript:void(window.open('https://p21.castertech.com/Prophet21/index.html','_blank'))若生效,说明是参数拼接/引用的问题;若仍无效,聚焦SSRS安全配置或嵌入环境限制。
查看浏览器控制台错误
点击报表元素时,打开Chrome开发者工具(F12)的「控制台」标签,查看是否有语法错误、权限报错等信息,直接定位问题根源。
内容的提问来源于stack exchange,提问作者Mark

