js回調函數、父畫面與子畫面之間的js回調函數(含參數傳遞)

 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" οnclick="photoSearch('
    					+ file1Id+ ');" >' + fileName + '</hj:link>'
    					+ '<html:button property="" styleId="delete1" value="削除" οnclick="deleteGazou('
    					+ file1Id + ');" ></html:button>';
    		} else {
    			table.rows[4].cells[1].innerHTML = '<hj:link href="javascript:void(0);" styleId="gazou1" οnclick="photoSearch('
    					+ file1Id+ ');" >'+ fileName + '</hj:link>'
    					+ '<html:button property="" styleId="delete1" value="削除" οnclick="deleteGazou('
    					+ file1Id + ');" ></html:button>';
    		}
    	} else if (upLoadFlg == "0") {
    		var fileNameStr = "gazou" + fileId;
			document.getElementById(fileNameStr).value = "";
			var fileSavePathStr = "gazouPath" + fileId;
			document.getElementById(fileSavePathStr).value = "";
    	}
	}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章