用vbs脚本来关闭 HTML 页面的代码_vbs

问:
你好,脚本专家!在我的一个脚本中,我显示一个 HTML 页面,其中包含我希望用户阅读的信息。当他们阅读完该页面之后,他们应该能按某个键使该网页消失。然而,网页并未消失,而是出现了一个消息框,提示说:“您正查看的网页正尝试关闭该窗口。是否要关闭该窗口?”然后,用户必须单击“是”,才能关掉这个网页。如何解决该问题?

-- RR

答:
你好,RR。顺便祝贺您:这是我们在“你好,脚本专家!”专栏中遇到的最长的问题了。不知道有没有奖赏?没有,但有一点可以肯定,有一天您可以把这件事讲给您的孙子听。

我们并没有说它会给您的孙子留下印象。但是,如果您是像脚本专家这样的人(但愿您不是),那么您决不会放过任何成绩,哪怕微不足道。毕竟,如果没有这些不给任何人留下印象的微不足道的成绩,我们就写不出年终总结啦!

无论如何,假定您有一个如下所示的 HTML 文件:

<BODY onkeypress='self.close()'>
Press any key to close this window.<BR>
</BODY>

当然,您的页面可能更加富有奇思妙想,不过思路是一样的:您已经获得某种网页,其中在 <BODY> 标记后附有 onkeypress 事件。如果此页面是活动窗口且有人按了键盘上的任意键,就会运行下面的小脚本:

self.close()

这个小脚本将关闭该页面。然而,正如您所注意到的,用户将看到一个消息框出现,询问他们是否确实要关闭该页面。这是 Internet Explorer 中内置的一种安全措施:它主要为了防止他人编写脚本来关闭您的网页。但是,在此情况下,就会阻止任何人(包括您自己)使用脚本关闭页面。(当然,您可以单击“关闭”按钮来关闭页面。但很明显,这不是您所要做的。)

那么,如何解决此问题?实际上,我们知道两种解决此问题的方法。第一种方法是,您可以简单地将文件扩展名从 .htm 更改为 .hta。如此一来,原本平淡无奇的 HTML 页面就转化为 – HTML 应用程序 (HTA)。与 HTML 页面相比,HTA 采用完全不同的运行进程和安全模型。因此,self.close() 方法将能够在不生成消息框的情况下关闭 HTA。

这是一种非常简单的解决方法。然而,不幸的是,这不是一种“万无一失”的解决方法;正是因为它们采用不同的安全模型,有的 HTML 页面不能转换为 HTA。但是没关系:我们说过,还有另一种方法可以解决此问题。如果您不愿意或无法将 HTML 页面转换为 HTA,那么您要做的所有事情就是添加一个 Window_OnLoad 子例程,使您的网页如下所示:

<SCRIPT LANGUAGE="VBScript">
    Sub Window_Onload
      window.opener = "x"
    End Sub
</SCRIPT>

<BODY onkeypress='self.close()'>
Press any key to close this window.<BR>
</BODY>

是的,这确实非常简单;事实上,该子例程本身仅包含一行代码:

window.opener = "x"

Opener 属性是对已打开您的窗口的窗口的引用。当您弹出您的网页时,Opener 属性为 Null。这是所期望出现的:毕竟,您的网页不是从另一窗口打开的。但是,在 Internet Explorer 中,不允许脚本关闭不具有 Opener 的页面。幸运的是,您要做的所有事情就是将 Opener 属性的值随便设成某个值(即使这些值是无意义的,像 x),然后您的脚本就可以正常工作了。

应指出的是,我们的答案是基于您的特殊情况的:您是从桌面打开 HTML 文件的。看起来这种方法也可用于由 Web 服务器提供的 HTML 页面。但是,我们只提供了一个基本测试,所以我们只能说:它似乎也适用于该情况。但这也不错:毕竟,虽然仅仅是似乎可行,但对于脚本专家们就是伟大的成就!

时间: 2024-10-28 17:08:20

用vbs脚本来关闭 HTML 页面的代码_vbs的相关文章

利用VBS脚本修改联想笔记本BIOS密码的代码分享

这篇文章主要介绍了利用VBS脚本修改联想笔记本BIOS密码的实现代码,感觉这不科学!无意中找到的一些资料,喜欢的朋友可以试试   这不科学!无意中找到的一些资料: vbs 代码: 复制代码 代码如下: strComputer = "." Set objWMIService = GetObject("winmgmts:" & strComputer & "rootWMI") ' Obtain an instance of the t

VBS脚本和BAT批处理删除自身的方法_vbs

VBS脚本和BAT批处理自身删除的方法(自杀) 删除自身之:VBS 把下面的脚本保存为selfkill.vbs或selfkill.vbe: 复制代码 代码如下: Set fso = CreateObject("Scripting.FileSystemObject") f = fso.DeleteFile(WScript.ScriptName) WScript.Echo( WScript.ScriptName) 然后运行它,是不是发现selfkill.vbs神奇的消失啦?而后面的对话框却

VBS脚本加密/解密VBS脚本(简易免杀版1.1)_vbs

Dim WshSHell,FSO On Error Resume Next Set WshSHell = WScript.CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") Set Args = WScript.Arguments Ver="1.1" CloseTime = 5 FileName = WScript.ScriptNam

VBS调用Photoshop批量生成缩略图的代码_vbs

模仿腾讯新闻页,给KingCms添加了新闻页图片点播的代码,代码要求的图片点播格式如下: 0###yun_qi_img/@@@/small/123.gif@@@8标题一***yun_qi_img/@@@/small/456.gif@@@标题二***yun_qi_img/@@@/small/789.gif@@@标题三 格式解释如下: 0代表第0页出现图片点播: yun_qi_img/是第一幅原图地址./small/123.gif是第一幅缩略图地址,原图和缩略图名字一样,后缀不一样,原图是jpg,缩

用vbs确定用户的登录名的代码_vbs

问: 您好,脚本专家!如何确定名为 John Smith 的用户的用户登录名? -- FR 答: 您好,FR.您知道,我们很愿意告诉您如何确定名为 John Smith 的用户的用户登录名,但是我们不能这样做:因为在我们的某个样例脚本中有一个特定的姓名列表,表示我们只能引用的用户名.遗憾的是,John Smith 不在该列表中,因此我们不能使用他的名字. 是的,对此我们也觉得不舒服,但是我们无能为力.但是要告诉您的是:向您介绍一个确定名为 Ken Myer 的用户的用户登录名的脚本怎么样?是的,

无法执行vbs脚本中遇到的问题及解决方案_vbs

今天有网友反映无法执行vbs文件,一般情况下,很多坏孩子用vbs写病毒,所以有时候杀毒会误杀或取消执行vbs文件 1. 没有文件扩展".vbs"的脚本引擎. 原因:有些软件会将".vbs"的文件的默认打开方式改成其他的方式. 手动解决: ① 先到%SYSTEMROOT%/system32/确认下自己的wscript.exe在不在,不在的话,从其它电脑上copy过来就OK ② 注册表 regedit 在HKEY_CLASSES_ROOT下面找到.VBS,看看默认值,改

一些经典的主要用户黑客的vbs脚本结合echo的dos下实现_vbs

1.文件下载(无回显)  echo iLocal = LCase(WScript.Arguments(1)) >iget.vbe  echo iRemote = LCase(WScript.Arguments(0)) >>iget.vbe  echo Set xPost = CreateObject("Microsoft.XMLHTTP") >>iget.vbe  echo xPost.Open "GET",iRemote,0 >

利用VBS脚本修改联想笔记本BIOS密码的代码分享_vbs

这不科学!无意中找到的一些资料: vbs 代码: 复制代码 代码如下: strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\WMI") ' Obtain an instance of the the class ' using a key property value. Set objShare = objWMIS

js 无提示关闭浏览器页面的代码_javascript技巧

方法一: 复制代码 代码如下: top.window.opener=null; top.window.open("","_self"); top.window.close(); 方法二: 复制代码 代码如下: top.window.opener = top; top.window.open('','_self',''); top.window.close(); _blank,在新窗口显示目标网页 _self,在当前窗口显示目标网页 _parent,框架网页中当前整个