在报表中调用客户JS的方法

编辑
文档创建者:印然 (67260 )     浏览次数:2814次     编辑次数:8次     最近更新:ukae 于 2018-08-15     

目录:

1. 问题描述编辑

两种情况:
1、报表嵌入在某个页面的iframe框架中,需要在报表模板中获取页面里面定义的方法;
2、报表嵌入在某个页面的iframe框架中,需要在报表模板中获取页面中另一个iframe里面的方法。
222

222

2. 解决方案编辑

首先通过js获取方法所在的对象,然后通过方法名调用:
情况1中页面对于模板来说是父,因此可以通过parent.window.fnname()调用父页面的方法;
情况2中通过父页面获取另一个iframe,再调用其中的方法:parent.window.getElementById("iframename").contentWindow.fnname()

3. 示例编辑

3.1 前提准备
如下page1.html中,通过iframe嵌入了一张report报表及page2.html页面;在page1中定义了方法fun1:
<html> <head> <title>page1</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript"> function fun1(){ alert("这是主页面中的方法!"); } </script> </head> <body> <p>这是page1</p> <iframe src="/webroot/help/page2.html" name="page2" id="page2" ></iframe> <iframe src="/webroot/decision/view/report?viewlet=report.cpt" name="report" scrolling="auto"></iframe> </body> </html>
其中page2.html中也定义了一个方法fun2:
<html> <head> <title>page2</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript"> function fun2(){ var name = alert("这是嵌在另一个iframe中页面里的方法!") } </script> </head> <body> <P>这是page2!</p> </body> </html>
page1.html/page2.html保存在webapps\webroot\help目录下。
3.2 在模板中调用客户自己的js方法
如在report.cpt模板的参数界面增加一个按钮,按钮点击事件中,获取页面page1及page2中的方法,js如下:
var page1 = parent.window; page1.fun1(); var page2 = page1.document.getElementById("page2").contentWindow; page2.fun2();

222
打开浏览器,输入http://localhost:8075/webroot/help/page1.html。即可看到上图所示的效果。

附件列表


主题: 二次开发
如果您认为本文档还有待完善,请编辑

文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

此页面有帮助吗?只是浏览 [ 去社区提问 ]