報表組件FineReport在報表中如何調用客戶的js

下面就通過報表組件FineReport來簡單介紹一下如何進行設置。

工具/原料

報表組件FineReport7.1.1
大小:148.2M 適用平台:windows/linux

方法/步驟

問題描述

兩種情況:

1、報表嵌入在某個頁面的iframe框架中,需要在報表模板中獲取頁面裡面定義的方法;

2、報表嵌入在某個頁面的iframe框架中,需要在報表模板中獲取頁面中另一個iframe裡面的方法。

解決方案

首先通過js獲取方法所在的對象,然後通過方法名調用:

情況1中頁面對於模板來說是父,因此可以通過parent.window.fnname()調用父頁面的方法;

情況2中通過父頁面獲取另一個iframe,再調用其中的方法:parent.window.getElementById("iframename").contentWindow.fnname()。

示例

前提準備

如下page1.html中,通過iframe嵌入了一張report報表及page2.html頁面;在page1中定義了方法fun1:

<html>

<head>

<title>page1</title>

<script type="text/javascript">

function fun1(){

alert("這是主頁面中的方法!");

}

</script>

</head>

<body>

<p>這是page1</p>

<iframe src="/WebReport/page2.html" name="page2" id="page2" ></iframe>

<iframe src="/WebReport/ReportServer?reportlet=report.cpt" name="report" scrolling="auto"></iframe>

</body>

</html>

其中page2.html中也定義了一個方法fun2:

<html>

<head>

<title>page2</title>

<script type="text/javascript">

function fun2(){

var name = alert("這是嵌在另一個iframe中頁面里的方法!")

}

</script>

</head>

<body>

<P>這是page2!</p>

</body>

</html>

在模板中調用客戶自己的js方法

如在report.cpt模板的參數界面提交按鈕點擊事件中,獲取頁面page1及page2中的方法,js如下:

var page1 = parent.window;

page1.fun1();

var page2 = page1.document.getElementById("page2").contentWindow;

page2.fun2();

原作者:FineReport

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場