`

window.showModalDialog介绍

阅读更多

window.showModalDialog的用法

基本介绍:
showModalDialog() (IE 4+ 支持)
showModelessDialog() (IE 5+ 支持)
window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。
window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。

使用方法:

vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])
vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])

 

参数说明:
sURL--
必选参数,类型:字符串。用来指定对话框要显示的文档的URL。
vArguments--
可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。
sFeatures--
可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。
1.dialogHeight :对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。
2.dialogWidth: 对话框宽度。
3.dialogLeft: 离屏幕左的距离。
4.dialogTop: 离屏幕上的距离。
5.center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。
6.help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。
7.resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。
8.status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。
9.scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。
下面几个属性是用在HTA中的,在一般的网页中一般不使用。
10.dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。
11.edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。
12.unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。

 


1.参数可以传递任何对象

 

要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:

<script>
var obj = new Object();
obj.name="51js";
window.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px");
</script>
<script>
var obj = window.dialogArguments
alert("您传递的参数为:" + obj.name)
</script>

 
2.通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。

 

例如:

<script>
str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px");
alert(str);
</script>



<script>
window.returnValue="http://www.51js.com";
</script>

 

3、模态(modal)和非模态(modeless)的区别

 

所谓模态对话框,就是指除非采取有效的关闭手段,用户的鼠标焦点或者输入光标将一直停留在其上的对话 框。非模态对话框则不会强制此种特性,用户可以在当前对话框以及其他窗口间进行切换。

 

本文介绍如何使用JavaScript语言来创建这两种类型的对话 框、控制其大小和位置、改变其外观以及在对话框间的数据传递。

本文的所有例程中,从层次上涉及到2个HTML页面。我们把第一个页面叫做caller页面,第二个页面叫做callee页面。也就是说,在caller页面执行代码创建生成callee页面。


创建模态和非模态对话框
首先,我们举个例子来快速了解一下什么是模态与非模态。在caller.htm中,我们输入以下代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <script language="javascript"> 
function fnOpenModal(){ 
window.showModalDialog("callee.htm") 
} 
function fnOpenModeless(){ 
window.showModelessDialog("callee.htm") 
} 
</script> 
 </HEAD>

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

 </BODY>
</HTML>

 
在 浏览器中打开caller.htm,点击“创建模态对话框”按钮,将会出现一个对话框窗口,其中的内容是callee.htm。你会看到,除了关闭这个新 窗口,无论怎样我们也不能将其他的窗口设置为“当前活动”窗口,这个一直是活动状态的窗口类型就是模态类型。关闭这个模态对话框,回到 caller.htm页面,点击“创建非模态对话框”,出现一个包含callee.htm页面的对话框窗口。这回有所不同,鼠标可以转移到其他地方使另外 的窗口成为“当前活动”状态,这就是非模态的概念。 


4、控制对话框大小和位置

 


控 制对话框的大小和位置涉及到5个方面:高度(dialogHeight)、宽度(dialogWidth)、相对于桌面左上角的x坐标 (dialogLeft)、y坐标(dialogTop)以及是否让对话框窗口居中(center)。由于不同版本的Internet Explorer浏览器处理的默认度量单位并非一致,所以我们在指定高度、宽度等大小时,最好是同时设置好单位。单位种类包括很多,比如cm、mm、 in、pt、pc、px。请注意:最小的高度值是100px。
下面的代码将打开一个高200px、宽800px的对话框:
window.showModalDialog('callee.htm','','dialogHeight:200px;dialogWidth:800px');
我们注意到,打开的新窗口会在桌面中处于居中的位置,这也正是居中属性(center)的默认值。居中属性(center)的可取值包括yes、no、1、0、on和off,含义一目了然。执行以下代码,看看关闭居中属性后新窗口的位置:
window.showModalDialog('callee.htm','','dialogHeight:200px;dialogWidth:800px;center:no');
我们看到,新窗口紧挨者桌面的左上角打开。当然,我们可以使用dialogLeft和dialogTop 属性来精确定义新窗口的打开位置。下面的代码将在相对于桌面左上角的x位置300px和y位置500px处打开新窗口:
window.showModalDialog('callee.htm','','dialogHeight:200px;dialogWidth:800px;dialogLeft:300;
dialogTop:500')
注意,即使指定了居中属性,但如果同时设置了dialogLeft和dialogTop属性值,那么窗口位置将遵从后者。试一试执行下面的代码:
window.showModalDialog('callee.htm','','dialogHeight:200px;dialogWidth:800px;dialogLeft:300;
dialogTop:500;center:yes')

 


5、改变对话框外观


对 话框的外观控制包括从窗口边缘风格(edge)、是否存在滚动条(scroll)、是否包含上下文关联提示图标(help)、是否显示状态栏 (status)以及是否可以改变窗口大小(resizable)等方面。默认情况下,新打开的窗口是大小不可改变的、边缘风格为凸起、在新窗口右上角显 示一个上下文关联提示图标、存在滚动条,比如:
 
 
edge的可取值为sunken(凹陷)和raised(凸起),status、help、resizeable和scroll的可取值都是yes、no、1、0、on和off,其含义一目了然。
下面的代码将去除上下文关联提示图标、不显示状态栏、窗口边缘风格为凹陷:
showModelessDialog("callee.htm","","status:0;help:0;edge:sunken"); 

 
6、实例


上面我们介绍了创建模态和非模态窗口的语法以及如何控制新窗口的大小、位置和外观,接下来我们研究一下实际应用中更实用的功能:如何从caller页面传递数据到callee页面。
从caller页面传递给callee页面的数据分为3类:传递值、传递数组引用以及传递对象,它们都是通过showModalDialog()和showModelessDialog()的第2个参数实现的。
(一)传递值类型数据
在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> 

 在浏览器中打开caller.htm,点击任意一个按钮,我们将首先看到如下的提示信息框:
 
 
 
然后才出现新窗口。这种情况下,callee.htm页面中的window对象的属性dialogArguments将对应于caller.htm页面中的"打开了一个新模态窗口"或者"打开了一个新非模态窗口"。如果直接打开callee.htm,将会出现错误提示。
(二)传递数组引用类型数据
第一种值类型数据的传递中,在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> 

 
最后,在浏览器中打开caller.htm,点击任意一个按钮,我们将首先看到如下的对话框:
 
 
接着关闭这个对话框以及新打开的窗口,再次点击一个按钮,又出现一个对话框:
 
 
从运行结果我们看到,在caller.htm页面中通过对数组a的地址引用,就可以实现在callee.htm中修改数组a的内容。
注意在callee.htm中要首先建立对传递数据的附值:a = dialogArguments。
(三)传递对象类型数据
在caller.htm 和callee.htm中传递数据的最有效方式是通过对象方式进行,这不仅能实现从caller.htm到callee.htm的传递,还能从 callee.htm传递到caller.htm。而且,我们还可以在caller.htm中定义对象的方法,再在callee.htm中使用它们。实际 上,我们可以将caller.htm的window对象传递给callee.htm,这样就可以在callee.htm中访问caller.htm的变量 及函数。
来看看一个实际的例子。在caller.htm中输入以下代码:

<HTML> 
<HEAD> 
<TITLE>传递对象数据</TITLE> 
<SCRIPT> 
var sColor="";  
function callDialog() { 
showModelessDialog("callee.html",window,"status:false;dialogWidth:300px;dialogHeight:150px"); 
} 
function update() 
{ 
oColor.innerText = sColor; 
} 
</SCRIPT> 
</HEAD> 
<BODY> 
<P>输入你最喜欢的颜色: <SPAN ID="oColor" STYLE="color:red;font-size:24">Yellow</SPAN></P>  
<INPUT TYPE="button" VALUE="Display Modeless Dialog" onclick="callDialog()"> 
</BODY> 
</HTML> 
在callee.htm中输入以下代码: 
<HTML> 
<HEAD> 
<TITLE>callee.html</TITLE> 
<SCRIPT> 
function getInfoAndUpdate() { 
var callerWindowObj = dialogArguments; 
callerWindowObj.sColor = oEnterColor.value; 
callerWindowObj.update(); 
} 
function cancel() { 
var callerWindowObj = dialogArguments; 
callerWindowObj.sColor = "Yellow"; 
callerWindowObj.update();  
} 
</SCRIPT> 
</HEAD> 
<BODY> 
输入你最喜欢的颜色:<INPUT ID=oEnterColor><BR><BR> 
<INPUT VALUE="Apply" TYPE=button onclick="getInfoAndUpdate();"> 
<INPUT VALUE="Ok" TYPE=button onclick="getInfoAndUpdate();window.close();"> 
<INPUT VALUE="Cancel" TYPE=button onclick="cancel();window.close();"> 
</BODY> 
</HTML>  

 
在浏览器中打开caller.htm,点击“显示非模态对话框”按钮,出现新对话框:
 
 
在对话框中输入其他颜色名称,点击“Apply”按钮后,执行callee.htm中的getInfoAndUpdate函数:

function getInfoAndUpdate() { 
var callerWindowObj = dialogArguments; 
callerWindowObj.sColor = oEnterColor.value; 
callerWindowObj.update(); 
} 

 
因 为在caller.htm中传递给callee.htm的是对象类型数据window,所以经过第一条语句的附值,callerWindowObj就指向 了caller.htm页面,然后就可以在callee.htm中按照callerWindowObj.xxx的形式引用caller.htm中的变量及 函数:callerWindowObj.sColor = oEnterColor.value负责将callee.htm中输入的颜色名称传递给caller.htm中的变量sColor,然后再执行 caller.htm中的 update()函数更新显示信息。
可以看到,通过对象方式传递数据,功能很丰富强大,而且使用起来也不复杂。 

 

分享到:
评论

相关推荐

    (源码)基于Python和LSTM的台湾电力负荷预测系统.zip

    # 基于Python和LSTM的台湾电力负荷预测系统 ## 项目简介 本项目旨在通过机器学习模型预测台湾特定区域的电力负荷情况,为能源管理和分配提供数据支持。系统基于时间序列分析,利用深度学习技术,特别是循环神经网络(RNN)中的LSTM层,对历史电力负荷数据进行学习,并预测未来的电力负荷趋势。 ## 项目的主要特性和功能 1. 数据处理项目能够处理并清洗从CSV文件中读取的电力负荷数据,包括处理缺失值、数据类型转换和日期处理等步骤。 2. 数据归一化使用sklearn的MinMaxScaler对数据进行归一化处理,将数据缩放到模型可处理的范围内。 3. 模型构建项目定义了一个包含两个LSTM层的RNN模型,用于学习电力负荷数据的时间依赖性。模型还包括Dropout层进行正则化,避免过拟合。 4. 模型训练使用历史电力负荷数据训练定义的RNN模型,并设置早期停止回调来避免过度训练。

    基于SpringBoot的古城景区管理系统源码数据库文档.zip

    基于SpringBoot的古城景区管理系统源码数据库文档.zip

    基于Springboot + vue的健康膳食管理系统源代码+数据库

    基于Springboot + vue的健康膳食管理系统源代码+数据库

    springboot287基于javaEE的校园二手书交易平台的设计与实现.zip

    论文描述:该论文研究了某一特定领域的问题,并提出了新的解决方案。论文首先对问题进行了详细的分析和理解,并对已有的研究成果进行了综述。然后,论文提出了一种全新的解决方案,包括算法、模型或方法。在整个研究过程中,论文使用了合适的实验设计和数据集,并进行了充分的实验验证。最后,论文对解决方案的性能进行了全面的评估和分析,并提出了进一步的研究方向。 源码内容描述:该源码实现了论文中提出的新的解决方案。源码中包含了算法、模型或方法的具体实现代码,以及相关的数据预处理、实验设计和性能评估代码。源码中还包括了合适的注释和文档,以方便其他研究者理解和使用。源码的实现应该具有可读性、可维护性和高效性,并能够复现论文中的实验结果。此外,源码还应该尽可能具有通用性,以便在其他类似问题上进行进一步的应用和扩展。

    springboot302基于vue的汽车租赁系统.zip

    论文描述:该论文研究了某一特定领域的问题,并提出了新的解决方案。论文首先对问题进行了详细的分析和理解,并对已有的研究成果进行了综述。然后,论文提出了一种全新的解决方案,包括算法、模型或方法。在整个研究过程中,论文使用了合适的实验设计和数据集,并进行了充分的实验验证。最后,论文对解决方案的性能进行了全面的评估和分析,并提出了进一步的研究方向。 源码内容描述:该源码实现了论文中提出的新的解决方案。源码中包含了算法、模型或方法的具体实现代码,以及相关的数据预处理、实验设计和性能评估代码。源码中还包括了合适的注释和文档,以方便其他研究者理解和使用。源码的实现应该具有可读性、可维护性和高效性,并能够复现论文中的实验结果。此外,源码还应该尽可能具有通用性,以便在其他类似问题上进行进一步的应用和扩展。

    毕业设计&课设_基于 vue.js 与 node.js 的毕业设计项目,含多模块功能,用于大学信息交流平台开发 .zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    基于卷积神经网络的连续语音识别_张晴晴.caj

    优质文献资料分享,希望可以帮助到你~

    碳排放权交易明细数据(2024年5月更新).dta

    1、资源内容地址:https://blog.csdn.net/2301_79696294/article/details/143734963 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 4、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理

    基于springboot+Javaweb的二手图书交易系统源码数据库文档.zip

    基于springboot+Javaweb的二手图书交易系统源码数据库文档.zip

    基于springboot的健身房管理系统源码数据库文档.zip

    基于springboot的健身房管理系统源码数据库文档.zip

    科研人员如何在国内高速下载测序数据SRA

    科研人员如何在国内高速下载测序数据SRA

    springboot290教学资料管理系统.zip

    论文描述:该论文研究了某一特定领域的问题,并提出了新的解决方案。论文首先对问题进行了详细的分析和理解,并对已有的研究成果进行了综述。然后,论文提出了一种全新的解决方案,包括算法、模型或方法。在整个研究过程中,论文使用了合适的实验设计和数据集,并进行了充分的实验验证。最后,论文对解决方案的性能进行了全面的评估和分析,并提出了进一步的研究方向。 源码内容描述:该源码实现了论文中提出的新的解决方案。源码中包含了算法、模型或方法的具体实现代码,以及相关的数据预处理、实验设计和性能评估代码。源码中还包括了合适的注释和文档,以方便其他研究者理解和使用。源码的实现应该具有可读性、可维护性和高效性,并能够复现论文中的实验结果。此外,源码还应该尽可能具有通用性,以便在其他类似问题上进行进一步的应用和扩展。

    emcopy042002.zip

    emcopy042002.zip

    基于Python+Django的电影票房数据分析系统源码数据库文档.zip

    基于Python+Django的电影票房数据分析系统源码数据库文档.zip

    基于Django的个性化餐饮管理系统源码数据库文档.zip

    基于Django的个性化餐饮管理系统源码数据库文档.zip

    Cocos2d-x教程视频Cocos2d-x游戏实战项目开发猜数字游戏

    Cocos2d-x教程视频Cocos2d-x游戏实战项目开发猜数字游戏提取方式是百度网盘分享地址

    使用Django搭建的基于Neo4j知识图谱的人际关系搜索与六度关系搜索系统,使用Mongo存储语料输出,使用Neo4j维护知识图谱.zip

    使用Django搭建的基于Neo4j知识图谱的人际关系搜索与六度关系搜索系统,使用Mongo存储语料输出,使用Neo4j维护知识图谱.zip

    基于springboot南皮站化验室管理系统源码数据库文档.zip

    基于springboot南皮站化验室管理系统源码数据库文档.zip

    小米商城Web网页-前端基础开发

    小米商城Web网页-学习前端开发的小伙伴可以下载下来看看或者学习一下

    springboot291校园疫情防控系统.zip

    论文描述:该论文研究了某一特定领域的问题,并提出了新的解决方案。论文首先对问题进行了详细的分析和理解,并对已有的研究成果进行了综述。然后,论文提出了一种全新的解决方案,包括算法、模型或方法。在整个研究过程中,论文使用了合适的实验设计和数据集,并进行了充分的实验验证。最后,论文对解决方案的性能进行了全面的评估和分析,并提出了进一步的研究方向。 源码内容描述:该源码实现了论文中提出的新的解决方案。源码中包含了算法、模型或方法的具体实现代码,以及相关的数据预处理、实验设计和性能评估代码。源码中还包括了合适的注释和文档,以方便其他研究者理解和使用。源码的实现应该具有可读性、可维护性和高效性,并能够复现论文中的实验结果。此外,源码还应该尽可能具有通用性,以便在其他类似问题上进行进一步的应用和扩展。

Global site tag (gtag.js) - Google Analytics