(面试题)html中创建模态窗口的方法有哪些?

时间:2024-12-12 08:03:25

一、创建模态和非模态对话框
除了alert(""); confirm(""); prompt("");之外还有
创建模态对话框:
vReturnValue = window.showModalDialog(sURL [, vFreeArgument] [, sOrnaments]);
如:window.showModalDialog("callee.htm")
创建非模态对话框: 
vReturnValue = window.showModelessDialog(sURL [, vFreeArgument] [, sOrnaments]);
如:window.showModelessDialog("callee.htm")

二、控制对话框大小和位置
下面的代码将打开一个高200px、宽800px的对话框:

window.showModalDialog('callee.htm','','dialogHeight:200px;dialogWidth:800px');

以下代码,看看关闭居中属性后新窗口的位置:

window.showModalDialog('callee.htm','','dialogHeight:200px;dialogWidth:800px;center:no');

三、改变对话框外观
下面的代码将去除上下文关联提示图标、不显示状态栏、窗口边缘风格为凹陷:
showModelessDialog("callee.htm","","status:0;help:0;edge:sunken");

四、从父页面页面传递数据到子页面

(一)传递值类型数据
在caller.htm页面中输入以下代码:

<INPUT TYPE="button" VALUE="创建模态对话框" onclick="fnOpenModal()">

<br><br>
<INPUT TYPE="button" VALUE="创建非模态对话框" onclick="fnOpenModeless()">

<script language="javascript">

<!--
function fnOpenModal()
{
window.showModalDialog("callee.htm","打开了一个新模态窗口")
}

function fnOpenModeless()
{
window.showModelessDialog("callee.htm","打开了一个新非模态窗口")
}
//-->

</script>

在callee.htm页面中输入以下代码:
<SCRIPT LANGUAGE="JavaScript">
<!--
alert(dialogArguments);
//-->
</SCRIPT>

(二)传递数组引用类型数据 (同样可以为对象传值) 
第一种值类型数据的传递中,在callee.htm页面中只能读取caller.htm页面的传递数据。
当需要对caller.htm页面的传递内容进行修改时,就需使用到数组引用类型的传递方式。 
首先,在caller.htm页面中输入以下代码:  
<INPUT TYPE="button" VALUE="创建模态对话框" onclick="fnOpenModal()"> 
<br><br>  
<INPUT TYPE="button" VALUE="创建非模态对话框" onclick="fnOpenModeless()"> 
<script language="javascript"> 
<!--  
var a = new Array; 
a[0]="first";
a[1]="second"; 
a[2]="third"; 
function fnOpenModal()
{  
window.showModalDialog("callee.htm",a) 
}  
function fnOpenModeless()
{  
window.showModelessDialog("callee.htm",a)
 }  
// --> 
</script>  
然后在callee.htm页面中输入以下代码: 
<SCRIPT LANGUAGE="JavaScript">
 <!--  
a = dialogArguments;  //特殊关键字,表示接收的的参数对象
alert(a);  
a[0] = "fourth";
 // --> 
</SCRIPT>