![]() |
|
由控制浏览器窗口的打开和关闭
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
广告招租,e-mail:yesize@hotmail.com ---- 看了9月13日的《计算机世界》上黄震先生的“用VBScript语言控制浏览器窗口的打开”一文,受益匪浅。只是在一般情况下,打开一个新的IE窗口之后,剩下工作,都由浏览者本人去控制它的关闭或浏览到一新的URL去;但有时候,就需要WEB发布者自己来管理控制新建IE窗口了,如下例的为某网页提供在线帮助窗口功能。 ---- 让我们先来看一看:微软的IE对象模型 ---- 微软的IE(Internet Explore)浏览器使用扩展的对象模型(如下图),其对象的顶层是Window对象,即你所在的浏览器窗口,它还包含其它一些对象(如不图)。你在IE窗口中所看到的一切,都可利用脚本语言(JavaScript、VBScript等),通过直接对Window对象的编程来访问。在这里,主要说说其顶层的Window对象的属性、方法和事件(仅列举部分)。 ---- 属性 ---- Window对象主要有以下属性: ---- 1. Name:如果已定义了当前窗口,则返回窗口的名称。 ---- 2. Parent:返回当前窗口的父窗口Window对象。 ---- 3. Opener:返回打开当前窗口的Window对象。 ---- 4. Location:返回当前窗口的URL。 ---- 方法 ---- 1. Open:创建一新的Window对象(IE浏览器例程),并返回指向新例程的指针。 ---- 2. Close:关闭窗口对象。 ---- 3. Alert:显示只含有OK按钮的警告消息框。 ---- 4. Navigate:将Window对象指向新的URL。 ---- 5. Focus: 将Window对象设置为当前窗口。 ---- 事件 ---- 1. Onload:当窗口内所有的内容被处理后触发。 ---- 2. Onunload:当窗口的内容被卸出时触发。 ---- IE窗口对象管理的(打开和关闭)设计思想在对打开的IE窗口进行管理时,关键问题是父窗口与子窗口之间的消息传递。对父窗口来说,通过Open方法创建一IE子窗口(Window对象)后,可用返回指向新例程的指针来对子窗口进行控制访问;对子窗口来说,可用Opener属性返回的父窗口的Window对象指针,来对父窗口进行控制访问。 ---- 例程: ---- 以下是作JavaScript脚本语言实现的对IE窗口简单的管理功能:为网页提供在线帮助窗口,它也可很容易地用VBScript来实现。整个实现的原理,请参照下面的说明。 ---- 与主窗口相关的HTML文件:JMain.htm(保存文件时,要删除说明) < html > < head >< script LANGUAGE=JavaScript FOR=window EVENT=onunload() > < !-- while(x) x.close(); 说明:在父窗口关闭时,也应关闭帮助子窗口。 注意:为什么不用下面的语句: if(x){ x.close(); x=null; } ---- 因为:父窗口在执行x.close()后,不管子窗口是否已彻底关闭,自己就继续执行直至关闭;而子窗口在关闭时,要通知父窗口,那么在此时,父窗口可能早已关闭,这时就会出现错误的。 //-- > < /script > < title >自由控制IE窗口的打开和关闭< /title > < meta http-equiv=Content-Type content= text/html; charset=gb2132 > 说明:设置网页的语言为简体中文。 < meta name=GENERATOR content= Microsoft FrontPage 3.0 > < script LANGUAGE=javascript > < !-- var x=null; 说明:定义全局子窗口指针变量 function open_onclick(){ ---- 说明:打开帮助按钮的onclick事件调用。如果没有子窗口对象,则新建子窗口,并返回指针;如果已有子窗口对象,则把其设置为当前窗口。 if(!x) x =window.open(JHelp.htm,helpwindow, width=320,height=65); else x.focus(); } function close_onclick(){ 说明:关闭帮助按钮的onclick事件调用。 如果有子窗口对象,则关闭子窗口 if(x){ x.close(); x =null; } } function sethelp(helptext){ ---- 说明:此网页中两个按钮对象和一个链接对象的onmouseover、onmouseout事件调用 var hstring; if (x) { x.focus(); if(helptext==open) hstring = 用鼠标点击,则打开在线帮助窗口!; else if (helptext==close) hstring = 用鼠标点击,则关闭在线帮助窗口!; else if (helptext==ustc) hstring = 用鼠标点击,则到中国科技大学主页!; else hstring =; if(x.HelpText) x.HelpText.value=hstring; ---- 说明:通过变量指针设置帮助子窗口HelpText对象的值(Value属性)。 } } -- > < /script > < /head > < body > < p >自由控制IE窗口的打开和关闭< /p > < p >< input TYPE=button VALUE=打开帮助 ONCLICK=open_onclick() onmouseover=sethelp(open) onmouseout= sethelp() > < /p > < p >< input TYPE=button VALUE=关闭帮助 ONCLICK=close_onclick() onmouseover=sethelp(close) onmouseout= sethelp() > < /p > < p >< a href=http://www.ustc.edu.cn onmouseover=sethelp(ustc) target=_blank onmouseout=sethelp() >中国科技大学< /a >< /p >< /body > < /html > ? 与子窗口相关的HTML文件:JHelp.htm (保存文件时,要删除说明) < html > < meta http-equiv=Content-Type content= text/html; charset=gb2132 > < head >< script LANGUAGE=JavaScript FOR= window EVENT=onunload() > < !-- if ( parent.opener) parent.opener. close_onclick (); 说明:浏览用户关闭子窗口时,通知父窗口; parent.opener返回父窗口指针。 -- > < /script > < title >在线帮助< /title > < meta name=GENERATOR content=Microsoft FrontPage 3.0 > < /head > < body bgcolor=#E4D9F7 > < h3 >< p align=center >< font color=#ff2222 > 在线帮助:< /font >< /p >< /h1 > < p >< /p > < p align=center >< input type=text name= HelpText size=40 >< /p > 说明:HelpText对象的值(Value属性) 由其父窗口通过变量指针设置。 < /body >< /html > ---- 注: 在这里,仅提供了对IE窗口打开或关闭的思路和方法,希望能对大家的WWW编程起到抛砖引玉的作用,另IE所有对象的属性、方法、事件及一些相关参数的引用,请参阅相关的书籍及网友的一些文章。 ---- 在NT4.0 WorkStation及Win98的PWS上运行正常。
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||