您的位置:首页 > Web前端 > JavaScript

js回调函数、父画面与子画面之间的js回调函数(含参数传递)

2013-01-14 16:50 519 查看
js回调函数、父画面与子画面之间的js回调函数(含参数传递)

(执行顺序:①→②→③→④)

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 = "";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: