js回调函数、父画面与子画面之间的js回调函数(含参数传递)
2013-01-14 16:50
519 查看
js回调函数、父画面与子画面之间的js回调函数(含参数传递)
(执行顺序:①→②→③→④)
function①→A.jsp(父画面)上的方法
②蓝色字部分:该子画面是以window.showModalDialog的形式打开的故子画面callBackFunction时应以window.dialogArgum
function②→B.jsp(子画面)上的方法
④蓝色字部分:window.dialogArguments形式返回
function④→A.jsp(父画面)上的方法
(执行顺序:①→②→③→④)
function①→A.jsp(父画面)上的方法
// 子画面の呼出 function openSubWindow(clubNo, fileId) { //サイズ決定 var windowSize = 'dialogWidth:' + '520' + 'px;dialogHeight:' + '330'+ 'px' + 'center:yes;help:no;resizable:no;scroll:no;status:no;unadorned:no;dialogHide:no'; //遷移先 var val = new Array(); val["action"] = "/Zfn110fjUploadInit"; var actionUrl = ACTION_PATH_BASE + val["action"]; actionUrl = actionUrl.replace(/;jsessionid=.*$/, "") + ".do?callBackFunction=setFileName&state=other&clubNo=" + clubNo + "&fileId=" + fileId; //ウィンドウ表示 window.showModalDialog(actionUrl, window, windowSize); }①setFileName即为子画面(B)执行后,父画面(A)要执行的方法,即:callBackFunction的方法
②蓝色字部分:该子画面是以window.showModalDialog的形式打开的故子画面callBackFunction时应以window.dialogArgum
function②→B.jsp(子画面)上的方法
// 画像ファイルをアップロード function fileSelect() { var fileId = document.getElementById("fileId").value; var objName = "file" + fileId; var fileObj = document.getElementById(objName); var filePath = fileObj.value; document.getElementById("filePath").value = filePath; var url = location.search; document.getElementById("initFlg").value = "1"; if (filePath == null || filePath == "") { alert("画像ファイルを指定してください。"); return; } else { var fileType = filePath.split(".")[1]; if (fileType == "jpg" || fileType == "jpeg") { document.getElementById("url").value = url; doSubmit('/Zfn110fjFileUpload', null); } else { alert("拡張子が、jpg 又はjpeg 以外の画像は指定できません。"); return; } callBack(); } }function③→B.jsp(子画面)上的方法
function callBack() { var fileId = document.getElementById("fileId").value; var clubNo = document.getElementById("clubNo").value; var filePath = document.getElementById("filePath").value var fileName = filePath.substr(filePath.lastIndexOf('\\') + 1); var upLoadFlg=document.getElementById("upLoadFlg").value; var url=document.getElementById("url").value; if (url.indexOf("?") != -1) { var str = url.substr(1); urlSplit = str.split("&"); urlCallBack = urlSplit[0].split("="); } var callBackFunction = urlCallBack[1]; var fileSavePathTmp = "<%=jp.co.central.zeus.common.CentralConstant.NAVI_UPLOAD_PATH_IMG%>"; var fileSavePath = fileSavePathTmp.replace("XXX", clubNo) + "/" + fileName; strRun = "window.dialogArguments." + callBackFunction + "('" + fileName + "','" + fileId + "','" + fileSavePath + "','" + upLoadFlg + "');"; if (window.dialogArguments) { eval(strRun); } }③B画面执行后,调用A画面上的方法,即:执行callBackFunction。
④蓝色字部分:window.dialogArguments形式返回
function④→A.jsp(父画面)上的方法
// callBackFunctionの呼出 function setFileName(fileName, fileId, fileSavePath,upLoadFlg) { //alert("1 upLoadFlg=" + upLoadFlg); if (upLoadFlg == "") { var fileNameStr = "gazou" + fileId; document.getElementById(fileNameStr).value = fileName; var fileSavePathStr = "gazouPath" + fileId; document.getElementById(fileSavePathStr).value = fileSavePath; } if (upLoadFlg == "1") { var file1Id = "'" + fileId + "'"; var tableId = "tableMess" + fileId; var table = document.getElementById(tableId); var fileNameStr = "gazou" + fileId; var fileName = document.getElementById(fileNameStr).value; if (fileId == "1" || fileId == "2") { table.rows[3].cells[1].innerHTML = '<hj:link href="javascript:void(0);" styleId="gazou1" onclick="photoSearch(' + file1Id+ ');" >' + fileName + '</hj:link>' + '<html:button property="" styleId="delete1" value="削除" onclick="deleteGazou(' + file1Id + ');" ></html:button>'; } else { table.rows[4].cells[1].innerHTML = '<hj:link href="javascript:void(0);" styleId="gazou1" onclick="photoSearch(' + file1Id+ ');" >'+ fileName + '</hj:link>' + '<html:button property="" styleId="delete1" value="削除" onclick="deleteGazou(' + file1Id + ');" ></html:button>'; } } else if (upLoadFlg == "0") { var fileNameStr = "gazou" + fileId; document.getElementById(fileNameStr).value = ""; var fileSavePathStr = "gazouPath" + fileId; document.getElementById(fileSavePathStr).value = ""; } }
相关文章推荐
- Vue.js 实现表单数据参数传递,以及不同独立按钮之间的参数传递
- js jquery 实现html页面之间参数传递(单一参数、对象参数传递)
- JS控制静态页面之间传递参数获取参数并应用的简单实例
- js实现两个页面之间跳转参数传递
- 页面之间传递参数js的方式
- web项目中界面(jsp或者js)之间参数的传递
- 如何使用js来实现通过href完成多个html页面之间的传递参数
- 页面之间传递参数,JS取得参数的工具方法
- Flash与JS之间相互调用以及参数传递
- js实现两个页面之间跳转参数传递
- js页面之间以及vue $http请求向后台传递参数中文乱码问题解决
- 参数传递( js 与 jsp中的java代码块 之间)
- JS控制静态页面之间传递参数获取参数并应用
- JS控制静态页面之间传递参数获取参数并应用(window.location)
- 后端往前段传递参数,大部分人都清楚,无非就是发起ajax请求获取后端值,然后通过js写入html相应位置即可。但是前段html页面之间,怎么传递参数呢?
- JS控制静态页面之间传递参数获取参数并应用(window.location)
- as3中如何向Alert.show的回调函数传递参数
- JSP 中js传递和解析URL参数以及中文转码和解码
- JSP中js传递和解析URL参数以及中文转码和解码问题
- AngularJS $http post 传递参数数据的方法