多语言展示
当前在线:965今日阅读:23今日分享:31

智能报表工具FineReport在 ie8下的跨域提交

用户想要实现在自己的OA系统里点击按钮,就能触发我们的报表的提交事件。但是如果报表和他们的OA不在一个应用中,会存在js跨域调用的权限问题,这个问题该如何解决呢?下面就通过智能报表工具FineReport来进行介绍。
工具/原料
1

智能报表工具FineReport7.1.1

2

大小:148.2M 适用平台:windows/linux

方法/步骤
1

模板设置在需要进行填报的模板添加加载结束事件,我们这边选择新建一张模板CrossSubmit.cpt,直接在填报预览处添加加载结束事件,代码如下:function send(val){ sendMessage(val); } (function(win, doc){ var ifr = win.parent; var cb = function(msg){ eval(msg); }; var sendMessage = function(){ if(win.postMessage){ if (win.addEventListener) {                win.addEventListener('message',function(e){ cb.call(win,e.data); },false);            }else if(win.attachEvent) {                win.attachEvent('onmessage',function(e){ cb.call(win,e.data); });            } return function(data){ ifr.postMessage(data,'*'); }; }else{ var hash = ''; setInterval(function(){ if(win.name!==hash){ hash = win.name; cb.call(win,hash); } },200); return function(data){ ifr.name = data; }; } } win.sendMessage = sendMessage(); })(window, document);

2

提交页面设置在本地新建test.html,此时test.html与我们报表模板是两个不同的域,在test.html中点'跨域提交'按钮,调用send('_g().writeReport()')则可以实现跨域提交。test.html的代码如下:Untitled Document 

3

效果查看由于使用的最简单的模板,即模板没有设计模板主体。IE8下:

4

谷歌下

推荐信息