文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么用vbs脚本来关闭HTML页面

2023-06-08 13:25

关注

本篇内容介绍了“怎么用vbs脚本来关闭HTML页面”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

问:
你好,脚本专家!在我的一个脚本中,我显示一个 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 页面。但是,我们只提供了一个基本测试,所以我们只能说:它似乎也适用于该情况。但这也不错:毕竟,虽然仅仅是似乎可行,但对于脚本专家们就是伟大的成就!

看了一下是不是关键比较怪呢,解决问题的方法并没有给出,这里编程网小编就为大家补充一下思路

其实用vbs来关闭页面真的没必须用js一样实现,页面运行完成以后自动输出关闭页面的代码

具体的可以参考这篇文章:www.jb51.net/article/44514.htm

vbs根据url关闭特定ie窗口

开始的时候本想用bat来写~
taskkill /f /fi "windowtitle eq 小游戏*" /im iexplore.exe
taskkill /f /fi "windowtitle eq 西*" /im iexplore.exe
但是藐视这样就把整个iexplorer.exe关闭了~~并不等达到过滤的问题~
于是乎想到了微软的亲儿子~Vbs。。。。

'By:林小七 '2014.1.30kill4399 = "http://www.4399.com"killGame = "http://xp.4399.com/"set sh = CreateObject("Shell.Application")set wnds = sh.windows()if Weekday(date)=0 Or Weekday(date)=7 thenWscript.Quitend ifwhile(true)for each wnd in wndsif InStr(1, wnd.LocationURL, kill4399, 1) then wnd.Quit()if InStr(1, wnd.LocationURL, killGame, 1) then wnd.Quit()nextWscript.Sleep 20000Wend

~嘿嘿,家里只有ie~~~并且只能有ie~~~哈~

只支持ie浏览器

Dim objIESet objIE = CreateObject("InternetExplorer.Application")objIE.Navigate "about:blank"objIE.Visible = TrueMsgBox "关闭IE"objIE.QuitSet objIE = Nothing

vbs另类关闭窗口方法

strWindowTitle="QQ2009;计算器;close.vbs - 记事本" '要关闭的窗口多个用;分隔开Set bjWord = CreateObject("Word.Application")Set colTasks = objWord.TasksstrWindowTitles=Split(strWindowTitle,";")For Each strTitle In strWindowTitles If colTasks.Exists(strTitle) Then strAnswer=MsgBox("发现指定窗口【"&strTitle&"】是否关闭?",vbYesNo+vbQuestion,"") If strAnswer=vbYes Then   colTasks(strTitle).Close End If End If Next objWord.Quit

其他的大家可以自行发挥,个人比较倾向使用第一种方法。

“怎么用vbs脚本来关闭HTML页面”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯