Skip to main content
黑话筒

水晶报表Bug之无法打印

公司产品用到了水晶报表, 产品用Install Shield做的安装包, 安装包里的水晶报表用MergeModule来安装, 这样客户只要安装我们的产品就可以了, 不用单独安装Crystal Report程序.

但是有些测试人员发现, 他们测试机上的水晶报表无法打印, 一按打印按钮, 就报Javascript错误.

后来慢慢查了一下他的Js脚本, 发现最终错误在export.js里的document.dlgform.action = opener.document.getElementById("crystal_handler_page").value;

因为页面上没有crystal_handler_page, 所以这里会出错.

google了一下, 没发现有价值的资料, 只有一个俄罗斯论坛上有人问过这个问题, 别人的回答是因为什么Adobe字体的问题. 但我们的问题是, 有些人的测试机上是好的, 有些人的测试机是不能打印的. 我感觉不是什么字体问题.

今天早上找了台不出错的测试机, 看看crystal_handler_page里面的值是什么, 结果发现就是opener的地址. 晕, 这么复杂干嘛? 不如直接取opener.location.href了.

我就把这句话改为document.dlgform.action = opener.location.href;

问题解决.

后来发现, 这可能是那个MergeModule的问题, 新安装的MergeModule已经修复了这个问题.