特殊功能说明1--iframe子窗体回传数据

打开窗体可以选择div方式和iframe方式,如果是div方式则打开窗体可直接访问父窗体的DOM,无需数据回传机制,对于iframe方式打开的窗体 目前window组件支持模态窗体和非模态窗体的数据回传,且编程方式一致。
回传参数的时机又可分为2类场景:窗体关闭时回传和窗体未关闭时回传。详述如下:
(一)窗体关闭时回传(通过给打开窗体注册“beforeClose”事件接收参数)
   1.在父窗体的js中给打开窗体注册“beforeClose”事件,事件handler包含3个参数:event,ui,val,第三个参数为打开的窗体回传参数
   2.在子窗体的js中通过工具类waf.windowMgr回传参数

在父窗体的js中给打开窗体注册“beforeClose”事件

var target=waf.window.open({
    url:"../ctrls/window/examples/cascadeWin-3.jsp",
    openType:"iframe",
        ......
    onBeforeClose:function iframe_ok_handler(event,ui,val){
        waf("#input_win2").val(val); //val为子窗体回传参数        
})

在子窗体的js中回传参数示例语句

//通过waf.windowMgr.setReturnValFuncWhenClose给当前窗体关闭事件指定回传参数函数,windowMgr会在窗体关闭时
//触发执行此函数。
//这种方式无论是点击窗体标题栏右侧的"x"还是通过waf.window.close方法关闭窗体时都有效。
<script type="text/javascript">
	function returnVal(){//returnVal为返回了回传的参数的函数
		return $('#input_win1').val();
	}
	waf.windowMgr.setReturnValFuncWhenClose(returnVal);

	function btnOkClick(){ //此处示例为点击jsp中确定按钮时绑定的函数
		waf.window.close();  //如果使用了waf.windowMgr.setReturnValFuncWhenClose方法,
		//则无需再使用waf.window.closeWithParam($("#input_win1").val());的方式回传参数
	}
</script>



(二)窗体未关闭时回传,这种方式相当于提供了在窗体(iframe)中调用父页面js函数的机制
   1.在父窗体的js中给打开窗体注册“retValCallBack”回调函数,包含1个参数:此参数由开发人员指定。
   2.在子窗体的js中通过工具类waf.windowMgr.triggerRetValCallBack回传参数并触发“retValCallBack”回调函数

在父窗体的js中给打开窗体注册“retValCallBack”回调函数

var target=waf.window.open({
    url:"../ctrls/window/examples/cascadeWin-3.jsp",
    openType:"iframe",
        ......
    retValCallBack:function doHandler(option){
        waf("#input_win2").val(option); //option为子窗体回传参数
})

在子窗体的js中触发回调函数示例语句

<script type="text/javascript">
	function btnOkClick(){ //此处示例为点击jsp中确定按钮时绑定的函数
		waf.windowMgr.triggerRetValCallBack($("#input_win1").val())
	}
</script>

特殊功能说明2--从父页打开弹出窗

弹出窗体默认从当前页打开,但是对于在IFRAME中弹出的窗体,希望弹出窗不要嵌在IFRAME里而是嵌在父页中(即展现在iframe的上面)就需要设置属性openFromParent为true。比如,从A页面弹出B窗体(iframe方式打开),此时A页面为WAF的根页面,此时无需在open方法中设置属性openFromParent。之后,从B窗体通过iframe方式弹出C窗体,此时设置了openFromParent为false(默认就是false),则C窗体会从B窗体内部打开。此时再从C窗体通过iframe方式弹出D窗体,如果设置openFromParent为false,则D窗体会从C窗体内部打开;如果设置openFromParent为true,则D窗体会从B窗体内部打开。