showModalDialog和showModelessDialog使用心得

一、showModalDialogshowModelessDialog有什么不同?
  showModalDialog:被打开后就会始终保持输入焦点。除非对话框被关闭,否则用户无法切换到主窗口。类似alert的运行效果。
  showModelessDialog:被打开后,用户可以随机切换输入焦点。对主窗口没有任何影响(最多是被挡住一下而以。:P)


二、怎样才让在showModalDialogshowModelessDialog的超连接不弹出新窗口?
  在被打开的网页里加上<base target="_self">就可以了。这句话一般是放在<html><body>之间的。


三、怎样才刷新showModalDialogshowModelessDialog里的内容?
  在showModalDialogshowModelessDialog里是不能按F5刷新的,又不能弹出菜单。这个只能依靠javascript了,以下是相关代码:


<body οnkeydοwn="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="关闭" οnclick="window.close()">
  也要配合<base target="_self">,不然会打开一个新的IE窗口,然后再关掉的。


五、showModalDialogshowModelessDialog数据传递技巧。
  (作者语:本来想用一问一答形式来写的,但是我想不出这个怎么问,所以只好这样了。)
  这个东西比较麻烦,我改了好几次了不是没办法说明白(语文水平越来越差了),只好用个例子说明了。

  例子:
    现在需要在一个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" οnclick="window.dialogArguments.s2.dialogTop=countNumber(window.dialogArguments.s2.dialogTop,''-'')" value="上移
">
  <input type="button" οnclick="window.dialogArguments.s2.dialogLeft=countNumber(window.dialogArguments.s2.dialogLeft,''-'')" value="左移
">
  <input type="button" οnclick="window.dialogArguments.s2.dialogLeft=countNumber(window.dialogArguments.s2.dialogLeft,''+'')" value="右移
">
  <input type="button" οnclick="window.dialogArguments.s2.dialogTop=countNumber(window.dialogArguments.s2.dialogTop,''+'')" value="下移">


  以上关键部份是:
    窗口命名方式:var s1=showModelessDialog(''控制.htm'',window,"dialogTop:1px;dialogLeft:1px"
    变量访问方式:window.dialogArguments.s2.dialogTop


  这个例子只是现实showModelessDialogshowModelessDialog之间的位置操作功能,通过这个原理,在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 οnlοad="openwin()">
…任意的页面内容…
</body>
</html>
这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。
怎么调用呢?
方法一:<body οnlοad="openwin()"> 浏览器读页面时弹出窗口;
方法二:<body οnunlοad="openwin()"> 浏览器离开页面时弹出窗口;
方法三:用一个连接调用:
<a href="#" οnclick="openwin()">打开一个窗口</a>
注意:使用的"#"是虚连接。
方法四:用一个按钮调用:
<input type="button" οnclick="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" οnclick="openwin()">open</a>即可。

【6、弹出的窗口之定时关闭控制】

  下面我们再对弹出的窗口进行一些控制,效果就更好了。如果我们再将一小段代码加入弹出的页面(注意是加入到page.html的HTML中,可不是主页面中,否则…),让它10秒后自动关闭是不是更酷了?
  首先,将如下代码加入page.html文件的<head>区:





<script language="JavaScript">
function closeit()
{setTimeout("self.close()",10000) //毫秒}
</script>
  然后,再用<body οnlοad="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="#" οnclick="openwin()">打开一个窗口</a>
<input type="button" οnclick="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 οnlοad="loadpopup()">(注意不是openwin而是loadpop啊!)替换主页面中原有的<BODY>这一句即可。你可以试着刷新一下这个页面或重新进入该页面,窗口再也不会弹出了。真正的Pop-Only-Once!
  写到这里弹出窗口的制作和应用技巧基本上算是完成了,俺也累坏了,一口气说了这么多,希望对正在制作网页的朋友有所帮助俺就非常欣慰了。
  需要注意的是,JS脚本中的的大小写最好前后保持一致。

转载于:https://www.cnblogs.com/lovenets/articles/454142.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python网络编程内容_Python网络编程

本文要写的内容也称为Python套接字编程&#xff0c;并简单介绍socketserver类。参考教程主要是《Python核心编程》。 首先&#xff0c;客户端/服务器模型&#xff0c;客户端向服务器发送请求&#xff0c;在请求合理的情况下&#xff0c;服务器返回客户端需要的资源&#xff0c;…

程序员面试金典 - 面试题 16.17. 连续数列(DP/分治)

1. 题目 给定一个整数数组&#xff08;有正数有负数&#xff09;&#xff0c;找出总和最大的连续数列&#xff0c;并返回总和。 示例&#xff1a; 输入&#xff1a; [-2,1,-3,4,-1,2,1,-5,4] 输出&#xff1a; 6 解释&#xff1a; 连续子数组 [4,-1,2,1] 的和最大&#xff0c…

视觉能力提升112%!李飞飞团队让AI进入社会,学会了“骗”标注…

作者 | 李梅编辑 | 陈彩娴来源 | AI科技评论人类从与他人的互动中学习&#xff0c;而目前的人工智能却常常只能在与社会隔离的环境中学习。所以当我们把一个智能体放到真实世界中时&#xff0c;它会不可避免地在遇到大量新的数据&#xff0c;无法应对不断变化的新需求。如何将智…

.Net 1.1下WEB引用Win控件的两个Bug

1.WEB系统引用windows控件的方式来实现页面打印的功能&#xff0c;一直使用比较正常&#xff0c;有一天更新后部分机器不能正常加载控件。后来分析的N久&#xff0c;发现是打印控件上我加了一个Label&#xff0c;使用了Arial Black字体&#xff0c;如果客户的机器上没有这种字体…

程序员面试金典 - 面试题 16.11. 跳水板(数学)

1. 题目 你正在使用一堆木板建造跳水板。 有两种类型的木板&#xff0c;其中长度较短的木板长度为shorter&#xff0c;长度较长的木板长度为longer。 你必须正好使用 k 块木板。编写一个方法&#xff0c;生成跳水板所有可能的长度。 返回的长度需要从小到大排列。 示例&…

信息抽取终于实现了大一统~

2022年了&#xff0c;有人说信息抽取领域早已是诸神黄昏。然而即使这样&#xff0c;依然“内卷”不止。似乎这个卷成麻花的领域已经看不到希望&#xff1f;但是不久前&#xff0c;这个沉寂之地忽然翻起了浪花&#xff0c;一篇发表在ACL2022上的工作&#xff0c;昭示着这个领域终…

python的输出函数_Python

Python print() 函数 描述 print() 方法用于打印输出&#xff0c;最常见的一个函数。 在 Python3.3 版增加了 flush 关键字参数。 print 在 Python3.x 是一个函数&#xff0c;但在 Python2.x 版本不是一个函数&#xff0c;只是一个关键字。 语法 以下是 print() 方法的语法: pr…

ubuntu6.06容易死机的一种解决方法

修改 /etc/X11/xorg.conf 在 Section "Module" 中把下面这句话注视掉。 # Load "dri" 然后&#xff0c;在下面这个Section中&#xff08;你的可能有些出入&#xff0c;但应该有个相似的Section&#xff09;&#xff0c;把 Driver "ati" 改成 Dri…

程序员面试金典 - 面试题 17.12. BiNode(BST中序遍历)

1. 题目 二叉树数据结构TreeNode可用来表示单向链表&#xff08;其中left置空&#xff0c;right为下一个链表节点&#xff09;。 实现一个方法&#xff0c;把二叉搜索树转换为单向链表&#xff0c;要求值的顺序保持不变&#xff0c;转换操作应是原址的&#xff0c;也就是在原始…

从大一统视角理解扩散模型(Diffusion Models)

文 | 中森知乎资料来源这篇文章是近期笔者阅读扩散模型的一些技术博客和概览的一篇梳理。主要参考的内容来自Calvin luo的论文&#xff0c;针对的对象主要是对扩散模型已经有一些基础了解的读者。Calvin luo 的这篇论文为理解扩散模型提供了一个统一的视角&#xff0c;尤其是其…

python开三次方_用python计算三次方根

我试图在python中计算以下函数&#xff1a;f(x) (1 cos(x))^(1/3) def eval( i ): return math.pow( (1 math.cos( i )), 1/3) 为什么它总是返回给我1&#xff1f; 我试图计算积分的Right和Left近似值&#xff0c;后者应用Simpsons Rule&#xff0c;但是Python似乎不喜欢这个…

程序员面试金典 - 面试题 16.05. 阶乘尾数(5的因子)

1. 题目 设计一个算法&#xff0c;算出 n 阶乘有多少个尾随零。 示例 1: 输入: 3 输出: 0 解释: 3! 6, 尾数中没有零。示例 2: 输入: 5 输出: 1 解释: 5! 120, 尾数中有 1 个零. 说明: 你算法的时间复杂度应为 O(log n) 。来源&#xff1a;力扣&#xff08;LeetCode&#x…

XML动态排序(1)

<?xml version"1.0" encoding"gb2312" ?><?xml-stylesheet type"text/xsl" href"paixu.xsl" ?><BlueIdea><team><blue_ID>1</blue_ID><blue_name>Sailflying</blue_name><blu…

python绘画_python学画画(上)

下载W3Cschool手机App&#xff0c;0基础随时随地学编程 导语 本来想用神经网络让计算机学会画铅笔画和素描的&#xff0c;后来发现其实不用神经网络效果也还可以&#xff0c;那么系列上就从简单的入手&#xff01; 先放图哈&#xff01;沙画&#xff1a;铅笔画&#xff1a;文件…

抖音、Tiktok危机!谷歌AI短视频生成模型,效果惊艳了

文 | 梦晨 Pine(发自凹非寺)源 | 量子位内容生成AI进入视频时代&#xff01;Meta发布「用嘴做视频」仅一周&#xff0c;谷歌CEO劈柴哥接连派出两名选手上场竞争。第一位Imagen Video与Meta的Make-A-Video相比突出一个高清&#xff0c;能生成1280*768分辨率、每秒24帧的视频片段…

程序员面试金典 - 面试题 16.07. 最大数值(位运算求max)

1. 题目 编写一个方法&#xff0c;找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。 示例&#xff1a; 输入&#xff1a; a 1, b 2 输出&#xff1a; 22. 解题 有符号整型数的二进制最高位存储的是符号位将符号位获取&#xff0c;1为负数&#xff0c;0…

python生成json_Python 生成json文件

原博文 2018-04-12 17:00 − 1.数据准备 数据下载 2.python代码 import datetime import os import mssqlhelper ms mssqlhelper.MSSQL(host"192.168.0.108", user"sa", pwd...218659 相关推荐 2019-05-09 21:36 − JSON(JavaScript Object Notation, JS …

一个数独问题的算法(已更新,提供一个简单算法,欢迎拍砖)

前段时间出差在外闲得无事看到一个数独问题。有三题&#xff0c;脑子不好使&#xff0c;只做出前两题。想想不如用程序来实现。我先把题放出来大家有兴趣研究一下。8 5 7 1 1 9 2 6 2 5 6 9 2 4 5 8 8 1 2 …

大规模CTR框架的变革之夜

文 | 卖萌酱大家好&#xff0c;我是卖萌酱。这几年&#xff0c;有太多的领域吃到了深度学习和大模型的红利&#xff0c;而被大家称之为“现金牛”业务的搜广推&#xff0c;相比CV、NLP等领域却表现的有点“慢半拍”。深度学习已经爆发有10年了。“点击率&#xff08;CTR&#x…

02. Creating a Web Forms User Interface

In this lesson, you will explore the various ASP.NET 2.0 server controls available in Visual Web Developer Express Edition. In addition, you will begin to get familiar with the windows in Visual Web Developer.发现好多东西都是我以前不知道的&#xff0c;收获挺…