しovのんeТs
しovのんeТs → 多一份坚持,多一份自信,便能做自己想做的人,做好自己想做的事!
posts - 19, comments - 14, trackbacks - 0, articles - 133新随笔 管理
< 2009年10月 >
日 一 二 三 四 五 六
27 28 29 30 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
1 2 3 4 5 6 7
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
随笔分类(14)
2.0 随笔(4)
Design Patterns
技术文章(4)
心情随笔(5)
阅读随笔(1)
文章分类(131)
ASP.NET(54)
C# . NET(21)
CSS样式设计(7)
DATAGRID(5)
JaveScript(9)
Net 2.0资料(2)
REPEATER(3)
SQL精典资料(12)
WebService(7)
WEB设计(3)
编程相关(4)
设计模式(2)
自已写滴(2)
最新随笔
1. VS 2005 VS2008 颜色配置文件下载
2. [转]正则表达式文档
3. 关于MSSQL Server中DATETIME类型数据的处理
4. 以流方式打开文件并输出到网页
5. 在CSDN上看到一个贴子,觉得写得很对,放这里,常看看!
6. GridView鼠标移动行变色
7. ASP.NET 2.0中动态添加 GridView 模板列的例子
8. [转]ASP.NET 安全认证(一)
9. ASP.NET 2.0中动态添加GridView
10. GridView中的鼠标特效
积分与排名
积分 - 19101
排名 - 3230
showModalDialog和showModelessDialog使用心得
Posted on 2006-07-18 22:54 しovのんeТs 阅读(488) 评论(1) 编辑 收藏 网摘 所属分类: JaveScript
一、showModalDialog和showModelessDialog有什么不同?
showModalDialog:被打开后就会始终保持输入焦点。除非对话框被关闭,否则用户无法切换到主窗口。类似alert的运行效果。
showModelessDialog:被打开后,用户可以随机切换输入焦点。对主窗口没有任何影响(最多是被挡住一下而以。:P)
二、怎样才让在showModalDialog和showModelessDialog的超连接不弹出新窗口?
在被打开的网页里加上<base target="_self">就可以了。这句话一般是放在<html>和<body>之间的。
三、怎样才刷新showModalDialog和showModelessDialog里的内容?
在showModalDialog和showModelessDialog里是不能按F5刷新的,又不能弹出菜单。这个只能依靠javascript了,以下是相关代码:
<body onkeydown="if (event.keyCode==116){reload.click()}">
<a id="reload" href="filename.htm" style="display:none">reload...</a>
将filename.htm替换成网页的名字然后将它放到你打开的网页里,按F5就可以刷新了,注意,这个要配合<base target="_self">使用,不然你按下F5会弹出新窗口的。
四、如何用javascript关掉showModalDialog(或showModelessDialog)打开的窗口。
<input type="button" value="关闭" onclick="window.close()">
也要配合<base target="_self">,不然会打开一个新的IE窗口,然后再关掉的。
五、showModalDialog和showModelessDialog数据传递技巧。
(作者语:本来想用一问一答形式来写的,但是我想不出这个怎么问,所以只好这样了。)
这个东西比较麻烦,我改了好几次了不是没办法说明白(语文水平越来越差了),只好用个例子说明了。
例子:
现在需要在一个showModalDialog(或showModelessDialog)里读取或设置一个变量var_name
一般的传递方式:
window.showModalDialog("filename.htm",var_name)
//传递var_name变量
在showModalDialog(或showModelessDialog)读取和设置时:
alert(window.dialogArguments)//读取var_name变量
window.dialogArguments="oyiboy"//设置var_name变量
这种方式是可以满足的,但是当你想在操作var_name同时再操作第二个变理var_id时呢?就无法再进行操作了。这就是这种传递方式的局限性。
以下是我建议使用的传递方式:
window.showModalDialog("filename.htm",window)
//不管要操作什么变量,只直传递主窗口的window对象
在showModalDialog(或showModelessDialog)读取和设置时:
alert(window.dialogArguments.var_name)//读取var_name变量
window.dialogArguments.var_name="oyiboy"//设置var_name变量
同时我也可以操作var_id变量
alert(window.dialogArguments.var_id)//读取var_id变量
window.dialogArguments.var_id="001"//设置var_id变量
同样还可以对主窗口的任何对象进行操作,如form对象里的元素。
window.dialogArguments.form1.index1.value="这是在设置index1元素的值"
六、多个showModelessDialog的相互操作。
因为光说很费劲,我就偷点懒,直接用代码来说了,如果不明白的话那就直接来信(oyiboy#163.net(使用时请将#改成@))问我吧。
以下代码的主要作用是在一个showModelessDialog里移动别一个showModelessDialog的位置。
主文件的部份js代码。
var s1=showModelessDialog(''控制.htm'',window,"dialogTop:1px;dialogLeft:1px") //打开控制窗口
var s2=showModelessDialog(''about:blank'',window,"dialogTop:200px;dialogLeft:300px") //打开被控制窗口
控制.htm的部份代码。
<script>
//操作位置数据,因为窗口的位置数据是"xxxpx"方式的,所以需要这样的一个特殊操作函数。
function countNumber(A_strNumber,A_strWhatdo)
{
A_strNumber=A_strNumber.replace(''px'','''')
A_strNumber-=0
switch(A_strWhatdo)
{
case "-":A_strNumber-=10;break;
case "+":A_strNumber+=10;break;
}
return A_strNumber + "px"
}
</script>
<input type="button" onclick="window.dialogArguments.s2.dialogTop=countNumber(window.dialogArguments.s2.dialogTop,''-'')" value="上移">
<input type="button" onclick="window.dialogArguments.s2.dialogLeft=countNumber(window.dialogArguments.s2.dialogLeft,''-'')" value="左移">
<input type="button" onclick="window.dialogArguments.s2.dialogLeft=countNumber(window.dialogArguments.s2.dialogLeft,''+'')" value="右移">
<input type="button" onclick="window.dialogArguments.s2.dialogTop=countNumber(window.dialogArguments.s2.dialogTop,''+'')" value="下移">
以上关键部份是:
窗口命名方式:var s1=showModelessDialog(''控制.htm'',window,"dialogTop:1px;dialogLeft:1px")
变量访问方式:window.dialogArguments.s2.dialogTop
这个例子只是现实showModelessDialog与showModelessDialog之间的位置操作功能,通过这个原理,在showModelessDialog之间相互控制各自的显示页面,传递变量和数据等。这要看各位的发挥了。
添加评论
9:54 | 固定链接 | 引用通告 (0) | 记录它
固定链接 关闭
http://aidu2008.spaces.msn.com/blog/cns!A57988C104D45CCE!210.entry
6月14日
转Window.open用法
一、window.open()支持环境:
JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+
二、基本语法:
window.open(pageURL,name,parameters)
其中:
pageURL 为子窗口路径
name 为子窗口句柄
parameters 为窗口参数(各参数用逗号分隔)
三、示例:
<SCRIPT>
<!--
window.open ('page.html','newwindow','height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')
//写成一行
-->
</SCRIPT>
脚本运行后,page.html将在新窗体newwindow中打开,宽为100,高为400,距屏顶0象素,屏左0象素,无工具条,无菜单条,无滚动条,不可调整大小,无地址栏,无状态栏。请对照。
上例中涉及的为常用的几个参数,除此以外还有很多其他参数,请见四。
四、各项参数
其中yes/no也可使用1/0;pixel value为具体的数值,单位象素。
参数 | 取值范围 | 说明
alwaysLowered | yes/no | 指定窗口隐藏在所有窗口之后
alwaysRaised | yes/no | 指定窗口悬浮在所有窗口之上
depended | yes/no | 是否和父窗口同时关闭
directories | yes/no | Nav2和3的目录栏是否可见
height | pixel value | 窗口高度
hotkeys | yes/no | 在没菜单栏的窗口中设安全退出热键
innerHeight | pixel value | 窗口中文档的像素高度
innerWidth | pixel value | 窗口中文档的像素宽度
location | yes/no | 位置栏是否可见
menubar | yes/no | 菜单栏是否可见
outerHeight | pixel value | 设定窗口(包括装饰边框)的像素高度
outerWidth | pixel value | 设定窗口(包括装饰边框)的像素宽度
resizable | yes/no | 窗口大小是否可调整
screenX | pixel value | 窗口距屏幕左边界的像素长度
screenY | pixel value | 窗口距屏幕上边界的像素长度
scrollbars | yes/no | 窗口是否可有滚动栏
titlebar | yes/no | 窗口题目栏是否可见
toolbar | yes/no | 窗口工具栏是否可见
Width | pixel value | 窗口的像素宽度
z-look | yes/no | 窗口被激活后是否浮在其它窗口之上
=====================================================
【1、最基本的弹出窗口代码】
其实代码非常简单:
<SCRIPT LANGUAGE="javascript">
<!--
window.open ('page.html')
-->
</SCRIPT>
因为着是一段javascripts代码,所以它们应该放在<SCRIPT LANGUAGE="javascript">标签和</script>之间。<!-- 和 -->是对一些版本低的浏览器起作用,在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。
Window.open ('page.html') 用于控制弹出新的窗口page.html,如果page.html不与主窗口在同一路径下,前面应写明路径,绝对路径(http://)和相对路径(../)均可。用单引号和双引号都可以,只是不要混用。
这一段代码可以加入HTML的任意位置,<head>和</head>之间可以,<body>间</body>也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。
【2、经过设置后的弹出窗口】
下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。
我们来定制这个弹出的窗口的外观,尺寸大小,弹出的位置以适应该页面的具体情况。
<SCRIPT LANGUAGE="javascript">
<!--
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no')
//写成一行
-->
</SCRIPT>
参数解释:
<SCRIPT LANGUAGE="javascript"> js脚本开始;
window.open 弹出新窗口的命令;
'page.html' 弹出窗口的文件名;
'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空'代替;
height=100 窗口高度;
width=400 窗口宽度;
top=0 窗口距离屏幕上方的象素值;
left=0 窗口距离屏幕左侧的象素值;
toolbar=no 是否显示工具栏,yes为显示;
menubar,scrollbars 表示菜单栏和滚动栏。
Resizable=no 是否允许改变窗口大小,yes为允许;
location=no 是否显示地址栏,yes为允许;
status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;
</SCRIPT> js脚本结束
【3、用函数控制弹出窗口】
下面是一个完整的代码。
<html>
<head>
<script LANGUAGE="JavaScript">
<!--
function openwin() { window.open ("page.html", "newwindow", "height=100, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")
//写成一行
}
//-->
</script>
</head>
<body onload="openwin()">
…任意的页面内容…
</body>
</html>
这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。
怎么调用呢?
方法一:<body onload="openwin()"> 浏览器读页面时弹出窗口;
方法二:<body onunload="openwin()"> 浏览器离开页面时弹出窗口;
方法三:用一个连接调用:
<a href="#" onclick="openwin()">打开一个窗口</a>
注意:使用的"#"是虚连接。
方法四:用一个按钮调用:
<input type="button" onclick="openwin()" value="打开窗口">
【4、同时弹出2个窗口】
对源代码稍微改动一下:
<script LANGUAGE="JavaScript">
<!--
function openwin()
{ window.open ("page.html", "newwindow", "height=100, width=100, top=0,left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")
//写成一行
window.open ("page2.html", "newwindow2", "height=100, width=100, top=100, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")
//写成一行
}
//-->
</script>
为避免弹出的2个窗口覆盖,用top和left控制一下弹出的位置不要相互覆盖即可。最后用上面说过的四种方法调用即可。
注意:2个窗口的name(newwindows和newwindow2)不要相同,或者干脆全部为空。OK?
【5、主窗口打开文件1.htm,同时弹出小窗口page.html】
如下代码加入主窗口<head>区:
<script language="javascript">
<!--
function openwin()
{window.open("page.html","","width=200,height=200")
}
//-->
</script>
加入<body>区:
<a href="1.htm" onclick="openwin()">open</a>即可。
【6、弹出的窗口之定时关闭控制】
下面我们再对弹出的窗口进行一些控制,效果就更好了。如果我们再将一小段代码加入弹出的页面(注意是加入到page.html的HTML中,可不是主页面中,否则…),让它10秒后自动关闭是不是更酷了?
首先,将如下代码加入page.html文件的<head>区:
<script language="JavaScript">
function closeit()
{setTimeout("self.close()",10000) //毫秒}
</script>
然后,再用<body onload="closeit()"> 这一句话代替page.html中原有的<BODY>这一句就可以了。(这一句话千万不要忘记写啊!这一句的作用是调用关闭窗口的代码,10秒钟后就自行关闭该窗口。)
【7、在弹出窗口中加上一个关闭按钮】
<FORM>
<INPUT TYPE='BUTTON' VALUE='关闭' onClick='window.close()'>
</FORM>
呵呵,现在更加完美了!
【8、内包含的弹出窗口-一个页面两个窗口】
上面的例子都包含两个窗口,一个是主窗口,另一个是弹出的小窗口。
通过下面的例子,你可以在一个页面内完成上面的效果。
<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
function openwin()
{OpenWindow=window.open("", "newwin", "height=250, width=250,toolbar=no,scrollbars="+scroll+",menubar=no");
//写成一行
OpenWindow.document.write("<TITLE>例子</TITLE>")
OpenWindow.document.write("<BODY BGCOLOR=#ffffff>")
OpenWindow.document.write("<h1>Hello!</h1>")
OpenWindow.document.write("New window opened!")
OpenWindow.document.write("</BODY>")
OpenWindow.document.write("</HTML>")
OpenWindow.document.close()}
</SCRIPT>
</head>
<body>
<a href="#" onclick="openwin()">打开一个窗口</a>
<input type="button" onclick="openwin()" value="打开窗口">
</body>
</html>
看看 OpenWindow.document.write()里面的代码不就是标准的HTML吗?只要按照格式写更多的行即可。千万注意多一个标签或少一个标签就会出现错误。记得用OpenWindow.document.close()结束啊。
【9、终极应用--弹出的窗口之Cookie控制】
回想一下,上面的弹出窗口虽然酷,但是有一点小毛病(沉浸在喜悦之中,一定没有发现吧?)比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页),那么每次刷新这个页面,窗口都会弹出一次,是不是非常烦人?:-(有解决的办法吗?Yes! ;-) Follow me.
我们使用cookie来控制一下就可以了。
首先,将如下代码加入主页面HTML的<HEAD>区:
<script>
function openwin()
{window.open("page.html","","width=200,height=200")}
function get_cookie(Name)
{var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset);
if (end == -1)
end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset,end))
}
}
return returnvalue;
}
function loadpopup(){
if (get_cookie('popped')=='){
openwin()
document.cookie="popped=yes"
}
}
</script>
然后,用<body onload="loadpopup()">(注意不是openwin而是loadpop啊!)替换主页面中原有的<BODY>这一句即可。你可以试着刷新一下这个页面或重新进入该页面,窗口再也不会弹出了。真正的Pop-Only-Once!
写到这里弹出窗口的制作和应用技巧基本上算是完成了,俺也累坏了,一口气说了这么多,希望对正在制作网页的朋友有所帮助俺就非常欣慰了。
需要注意的是,JS脚本中的的大小写最好前后保持一致。
分享到:
相关推荐
OpenNLP(Open Natural Language Processing)是一个开源的自然语言处理工具包,主要为Java开发者提供服务。这个"opennlp-tools-1.3.0.gz"文件是OpenNLP的1.3.0版本,它包含了处理自然语言所需的各种算法和模型。...
OpenAI是一家致力于研究、开发和应用人工智能技术的非营利组织,其开源的Python库提供了丰富的工具,便于开发者在机器学习和人工智能领域进行实验。这里我们关注的是`openai`库的1.14.2版本的安装文件。下面将详细...
《OpenFOAM编程指南》是针对流体仿真软件OpenFOAM的中文教程,旨在帮助用户深入理解和掌握OpenFOAM的编程技巧。OpenFOAM是一款开源的、强大的计算流体动力学(CFD)软件,广泛应用于工程领域的流体力学问题模拟。本...
OpenCore Configurator 2.67.1.0 是一个专为OpenCore引导加载器配置而设计的强大工具,尤其在黑苹果(Black Apple,即在非Apple硬件上安装 macOS)社区中广泛应用。这个版本更新主要增加了对OpenCore 0.9.1的支持,...
【AI 大模型】OpenAI 接口调用 ① ( 安装 openai 软件包 | 查看 openai 软件包版本 | PyCharm 中开发 Python 程序调用 OpenAI 接口 ) https://hanshuliang.blog.csdn.net/article/details/139922167 博客源码快照 一...
**opendrive** 是一种广泛使用的开放标准,用于描述道路网络和交通场景的详细信息,尤其在自动驾驶和智能交通系统领域。它定义了一种XML格式,可以存储包括道路布局、车道线、交通标志、信号灯等在内的丰富地理信息...
Openai Api开发文档 | Openai Api中文文档 | Openai Api中英双语文档 ChatGPT是由OpenAI开发的一个人工智能聊天机器人程序,于2022年11月推出。该程序使用基于GPT-3.5架构的大型语言模型并通过强化学习进行训练。 ...
pip 不支持安装cuda版本的open3d,因此需要手动编译open3D源码 Windows 1. Setup Python binding environments Most steps are the steps for Ubuntu: 2. Setup Python environments. Instead of which, check the ...
"openform热力模型更正文件_openfoam_OpenFOAM热物理参数修正_"这个标题暗示了我们需要关注的是OpenFOAM中的热物理模型校正和参数调整。OpenFOAM通过其内置的热物理库来处理与热力学相关的计算,包括热传导、对流、...
OpenDRIVE,全称为Open Driving Scene Description Format,是一种标准的数据格式,用于描述道路网络和交通场景,广泛应用于自动驾驶、交通模拟以及车辆动力学研究等领域。本篇将详细解析OpenDRIVE 1.4H和1.5M版本的...
OpenFOAM是一个开源的计算流体动力学(CFD)软件,它在工程和科学研究领域广泛应用。本资料主要针对在Linux环境下使用OpenFOAM进行基本操作进行讲解。Linux是OpenFOAM的主要运行平台,因为其稳定性和强大的命令行...
在Ubuntu 18.04操作系统中安装Open3D C++版本是一个常见的需求,尤其对于进行三维数据处理、可视化和机器学习的开发者来说。Open3D是一个开源的C++库,它提供了对3D数据的强大支持,包括点云处理、几何建模、可视化...
OpenCore 是一个现代的引导加载器,用于在MacOS系统上实现启动自定义硬件或进行系统升级。OpenCore 0.7.6 版本是该软件的一个特定迭代,提供了许多改进和修复,以增强其稳定性和兼容性。在这个版本中,我们可以期待...
而OpenAI是一家致力于研究、开发和应用人工智能技术的非营利组织,它提供了多种API,包括GPT系列模型,使得开发者能够利用自然语言处理(NLP)技术。本文将详细介绍如何在Delphi中调用OpenAI的接口,实现与OpenAI...
OpenCore Legacy Patcher是一款专为macOS用户设计的工具,主要功能是帮助用户在不支持最新OpenCore启动加载器的老式Mac系统上安装和运行较新的macOS版本。OpenCore作为替代传统 Clover 引导加载器的选择,以其高度可...
OpenCore是近年来越来越流行的启动加载器,它替代了原先的Clover,用于引导macOS安装过程。下面我们将详细探讨使用OpenCore安装黑苹果的知识点。 首先,OpenCore是什么?OpenCore是Alessandro Stosa开发的一个开源...
"open62541.rar" 是一个压缩文件,其中包含了与OPC UA相关的开源项目open62541的编译结果。OPC UA(OPC统一架构)是一种开放的标准,用于在工业自动化系统中实现设备和软件之间的数据交换。open62541是一个C++实现的...
OpenACS的部署与使用详细图文教程 OpenACS是一个基于Java的开源内容管理系统,使用Java Servlet技术和Java Server Faces(JSF)来构建Web应用程序。下面将详细介绍OpenACS的部署与使用方法。 知识点一:OpenACS的...
OpenPDF 是一个免费的 Java 库,用于创建和编辑 PDF 文件,具有 LGPL 和 MPL 开源许可证。 OpenPDF 基于 iText 的一个分支。 OpenPDF 的一些功能包括: 创建 PDF:您可以使用 OpenPDF 从头开始创建新的 PDF ...
推荐理由:一个允许在您的终端本地运行OpenAI的代码解释器的项目。它为开发者提供了一种便捷的方式来解释和执行OpenAI生成的代码,使其在本地环境中更易于调试和测试。这个工具对于开发基于OpenAI的应用程序和算法...