Laboratory/Develop

showModalDialog 관련 모음

theking 2007. 12. 9. 06:00

showModalDialog Post 로 파람넘기기?

겟방식은 잘 넘어 값니다..

그런데 포스트 방식은 어떻게 넘기나요?

document.forms[0].target="원래는 여기다 윈도 이름 주잖아요..";

근데 모달에선 어떻게 해야되는지..

오브젝트 생성해서 부모창 제어 하는건 하겠는데..

모달창 최초 열릴때 request.getParameter(); 해서 가져올 값이 있어서요..

아..겟은 말구요...온리 포스트.

====================================
showModalDialog Post 로 파람넘기기?
showModalDialog는 Post방식으로 열수가 없습니다...

대신에 dialogArguments를 쓰실 수 있죠.

showModalDialog(URL, dialogArguments, properties)

이런 형식으로 프로토 타입을 정할 수 있죠.

즉... window.showModalDialog("dailogWindow.html", "hello...", "dialogWidth:300px; dialogHeight:200px");

이런 형식으로 호출 할 수있습니다...

그러면 dialogWindow.html이라는 오픈된 창에서...

window.dailogArguments를 참조하면 "hello..."란 문자열을 얻을 수 있는 거죠...

그러면 보내고 싶은 값들이 여러개라면?

배열로 보내면 됩니다....


window.showModalDialog("dailogWindow.html", ["hello", "world"]], "dialogWidth:300px;

dialogHeight:200px");

이런 형식으로 오픈하고... 오픈된 창에서는


var arr = window.dailogArguments;

var hello = arr[0];

var world = arr[1];


이런 형식으로 참조하면 됩니다...

즉... 님은 오픈하시려고 할때 dialogArguments를 배열로 만들어서 여러개로 보내면...

서버쪽에 값을 보내지 않아도 자바스크립트 상에서 파라미터를 보낼 수 있는 거죠...

모달창에서는 부모 객체나 변수를 참조하는 것이 안되더라고요...

즉... 이런 형식으로 아규먼트로 넘겨주면 쉽게 해결 될 수 있으니 참고하세용...
=================================================
간단 창띄우기(showModalDialog) - msdn lib
=================================================
<html>
<head>
<script language="jscript">
 var gobjXDocument = null;
 function Initialize()
 {
  // Save a reference to the XDocument object.
  if (typeof window.dialogArguments == "object")
  gobjXDocument = window.dialogArguments;
 }
</script>

<title>A Simple Custom Dialog Box</title>
</head>

<body style="BACKGROUND-COLOR: window" onLoad="Initialize()">
 <strong>Click one of the following buttons:</strong>
 <br/>
 <br/>
 <div id="divButtons" tyle="align:center">
 <input id="btnShowAlert" style="WIDTH: 106px; HEIGHT: 24px"
  onclick='gobjXDocument.UI.Alert(gobjXDocument.DOM.xml);'
   type="button" size="21" value="Show Alert"></input>
 <input id="btnCancel" style="WIDTH: 106px; HEIGHT: 24px"
  onclick="window.close();" type="button" size="21"
  value="Cancel"></input>
 </div>
</body>
</html>
====================================================
var strSQL;
strSQL = "INSERT INTO Gegevens(Naam,Adres,Woonplaats) VALUES('" +

XDocument.DOM.selectSingleNode("//my:txtName").text + "','" + XDocument.DOM.selectSingleNode

("//my:txtAddress").text + "','" + XDocument.DOM.selectSingleNode("//my:txtCity").text + "')";
XDocument.UI.Alert(strSQL);
====================================================
JavaScript로 Modal/Modeless 팝업창 띄우기
====================================================
>>>> 호출하는 페이지

ReturnValue = window.showModalDialog( "URL" [, arguments [, "features"]])
ReturnValue = window.showModelessDialog( "URL" [, arguments [, "features"]])

features)
  center: yes | no | 1 | 0 | on | off
  dialogHeight: Length/units
  dialogLeft: Integer
  dialogTop: Integer
  dialogWidth: Length/units
  edge: raised | sunken
  help: yes | no | 1 | 0 | on | off
  resizable: yes | no | 1 | 0 | on | off
  status: yes | no | 1 | 0 | on | off

sample code)

  var args = new Array();

  args["msg"] = "작업을 완료했습니다.";
  args["winTitle"]  = "알림";
  ReturnValue =
      window.showModal(
           "http://www.neoapi.com",
           args,
           "dialogWidth:200px; dialogHeight:100px; edge:sunken; center:yes; resizable:no; status:no;

help:no; scroll:no;");

    return ReturnValue;

>>> 호출되는 페이지

호출되는 페이지는 HTML이라도 상관없다.
javascript로 client가 보내준 내용을 알 수 있다.
위 client가 보내온 내용은 아래와 같이 받을 수 있다.

  var msg = window.dialogArguments["msg"];
  var title = window.dialogArguments["winTitle"];

또한 브라우저가 닫힐 때, 리턴값을 돌려줄 수 있는데,
아래와 같이 하면 된다.

  window.returnValue = true;
  window.close();

리턴값은 꼭 boolean이어야 하는 것은 아니다.

>>> 주의할 사항

일반적으로 뭔가를 클릭했을 때, 팝업창을 표시하게 되는데
아래와 같이 <a> tag의 href에서 사용하지 말고
onClick event에서 하도록 한다.

<a href="#none" onclick="callPopupWindow()">(확인)</a>
====================================================
window.showModalDialog Arguments
====================================================
[ 부모창의 스크립트 일부(함수) ]

function msgDialog(){

  var args = new Array();
  args["msg"]       = msg;

  var msgDialog = window.showModalDialog("[주소]", args, "[속성]");

  return msgDialog;

}

/*
 설명 : 부모창에서 인자를 배열로 만들어 창이름에 넣는 곳에 넣는다.
*/

[ 자식창의 일부 ]

 var msg = window.dialogArguments["msg"];

// 부모창에서 넘긴 값을 dialogArguments로 받아서 사용
===============================================