프로그램 코드
함수 openEgg(유형){
window.showModalDialog('../EggPlay.aspx?type='+type,'','dialogHeight: 600px;DialogWidth: 800px; edge:Raised; center: Yes; help: No; resize: No; status: No; 스크롤:아니요;');
}
Javascript에는 window.alert(), window.confirm(), window.prompt() 등과 같은 대화 상자를 생성하는 많은 내장 메서드가 있습니다. 그러나 IE는 대화 상자를 지원하는 더 많은 방법을 제공합니다. 예:
showModalDialog() (IE 4+에서 지원)
showModelessDialog()(IE 5+에서 지원)
window.showModalDialog() 메서드는 HTML 내용을 표시하는 모달 대화 상자를 만드는 데 사용됩니다. 대화 상자는 일반적으로 window.open()으로 열리는 창의 모든 속성을 갖고 있지 않습니다.
window.showModelessDialog() 메서드는 HTML 콘텐츠를 표시하는 모덜리스 대화 상자를 만드는 데 사용됩니다.
showModelessDialog()를 사용하여 창을 열 때 창을 닫기 위해 window.close()를 사용할 필요가 없습니다. 비모달 모드[IE5]에서 열리면 대화 상자를 여는 창은 여전히 다른 작업을 수행할 수 있습니다. 즉, 대화 상자가 항상 열려 있는 것은 아니며 대화 상자를 여는 창의 URL이 변경되면 자동으로 닫힙니다. 모달 [IE4] 대화 상자에는 항상 초점이 있습니다(닫을 때까지 초점을 제거할 수 없습니다). 모달 대화 상자는 그것을 열었던 창에 연결되어 있으므로 다른 창을 열 때 해당 링크 관계는 여전히 유지되고 활성 창 아래에 숨겨집니다.
그것을 사용하는 방법:
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
vReturnValue = window.showModelessDialog(sURL [, vArguments] [, sFeatures])
매개변수 설명:
sURL
필수 매개변수, 유형: 문자열. 대화 상자에 표시할 문서의 URL을 지정하는 데 사용됩니다.
v인수
선택적 매개변수, 유형: 변형. 대화 상자에 매개변수를 전달하는 데 사용됩니다. 배열 등을 포함하여 전달되는 매개변수 유형은 제한되지 않습니다. 대화 상자는 window.dialogArguments를 통해 전달된 매개변수를 가져옵니다.
특징
선택적 매개변수, 유형: 문자열. 대화 상자의 모양과 기타 정보를 설명하는 데 사용되며 다음 중 하나 이상을 세미콜론 ";"으로 구분하여 사용할 수 있습니다.
DialogHeight는 대화 상자의 높이로 100px 이상입니다. IE4에서는 대화 상자 높이와 대화 상자 너비의 기본 단위가 em인 반면, IE5에서는 편의상 모달 대화 상자를 정의할 때 단위를 px로 사용합니다.
DialogWidth: 대화 상자 너비.
DialogLeft: 데스크탑 왼쪽으로부터의 거리입니다.
DialogTop: 데스크탑으로부터의 거리입니다.
center: {yes | no | 1 | 0}: 창이 중앙에 있는지 여부, 기본값은 yes이지만 높이와 너비는 계속 지정할 수 있습니다.
help: {yes | no | 1 | 0}: 도움말 버튼을 표시할지 여부, 기본값은 yes입니다.
크기 조정 가능: {예 | 아니요 | 0} [IE5+]: 크기를 조정할 수 있는지 여부입니다. 기본값은 아니오입니다.
status: {yes | no | 0} [IE5+]: 상태 표시줄을 표시할지 여부입니다. 기본값은 yes[Modal] 또는 no[Modal]입니다.
scroll:{ yes | no | 0 | on off }: 대화 상자에 스크롤 막대가 표시되는지 여부를 나타냅니다. 기본값은 예입니다.
HTA에는 일반적으로 일반 웹 페이지에서 사용되지 않는 여러 속성이 사용됩니다.
DialogHide:{ yes | no | 0 | on off }: 인쇄 또는 인쇄 미리보기 중에 대화 상자를 숨길지 여부입니다. 기본값은 아니오입니다.
edge:{ sunken | raise }: 대화 상자의 테두리 스타일을 지정합니다. 기본값은 증가합니다.
unadorned:{ 예 | 아니오 | 0 | 끄기 }: 기본값은 아니오입니다.
매개변수를 전달합니다.
매개변수를 대화 상자에 전달하기 위해 매개변수는 vArguments를 통해 전달됩니다. 유형에는 제한이 없습니다. 문자열 유형의 경우 최대 길이는 4096자입니다.
프로그램 코드
test1.htm
과 같은 개체를 전달할 수도 있습니다.
=====================
<스크립트>
var mxh1 = new Array("mxh","net_lover","맹자 챕터 E")
var mxh2 = window.open("about:blank","window_mxh")
//대화상자에 배열 전달
window.showModalDialog("test2.htm",mxh1)
// 창 개체를 대화 상자에 전달합니다.
window.showModalDialog("test3.htm",mxh2)
</script>
test2.htm
=====================
<스크립트>
var a = window.dialogArguments
Alert("전달한 매개변수는 다음과 같습니다: " + a)
</script>
test3.htm
=====================
<스크립트>
var a = window.dialogArguments
Alert("전달한 매개변수는 창 개체입니다. 이름: " + a.name)
</script>
window.returnValue를 통해 대화 상자를 연 창에 정보를 반환할 수 있으며, 물론 객체일 수도 있습니다. 예를 들어:
프로그램 코드
test4.htm
====================
<스크립트>
var a = window.showModalDialog("test5.htm")
for(i=0;i<a.length;i++) 경고(a[i])
</script>
test5.htm
====================
<스크립트>
함수 sendTo()
{
var a=new 배열("a","b")
window.returnValue = a
창.닫기()
}
</script>
<본문>
<양식>
<input value="Return" type=button onclick="sendTo()">
</form>
FAQ:
1. 새 창을 열지 않고 모달 대화 상자에서 제출하는 방법은 무엇입니까?
브라우저가 IE5.5+인 경우 대화 상자에서 이름 속성이 있는 iframe을 사용할 수 있으며 제출 시 대상을 iframe의 이름으로 설정할 수 있습니다. IE4+의 경우 높이가 0인 프레임을 사용할 수 있습니다. 예:
프로그램 코드
test6.htm
====================
<스크립트>
window.showModalDialog("test7.htm")
</script>
test7.htm
====================
if(window.location.search) 경고(window.location.search)
<프레임 세트 행="0,*">
<프레임 src="/blog/about:blank">
<프레임 src="test8.htm">
</frameset>
test8.htm
====================
<form target="_self" 메소드="get">
<입력 이름=txt 값="테스트">
<입력 유형=제출>
</form>
<스크립트>
if(window.location.search) 경고(window.location.search)
</script>
2. http://servername/virtualdirname/test.htm?name=mxh를 통해 매개변수를 대화 상자에 직접 전달할 수 있습니까?
대답은 '아니요'입니다. 하지만 프레임에서는 가능합니다.