SetTimeout() 不会执行该函数

2024-04-21

这是我的代码片段:

'in VBScript

Sub Main()
   Dim timeoutTimer

   'more scripts here
   'more scripts here
   'more scripts here

   timeoutTimer = window.setTimeout("alert()", 2000)

   Call WaitForAnEvent() 'This function waits for an event to happen
                         'if there is no event then code execution stop's
                         'and wait
   'more scripts here
   'more scripts here
   'more scripts here
End Sub 

Sub alert()
   MsgBox "Help!"
End Sub

发生的情况是,有时alert()没有被触发,我不知道为什么。我对 setTimeout() 进行了一些研究,他们说如果计时器到期并且一旦有可用的机会执行它, setTimeout 将被触发。我相信之后WaitForAnEvent()被调用时,将有机会执行 setTimeout,但是有时是 and 有时并非如此。

Update-------------------------------------------------- ----------------------------

我读了很多关于setTimeout他们都说(简而言之)如果浏览器正忙于做某事,则无法触发它。

Now:

  • 假设浏览器正在做某事(无限)是否正确,以及 setTimeout 找不到可用时刻来触发该函数?
  • VBScript/Javascript 有没有办法检查 IE(浏览器)当前是否正在执行渲染文本或执行某些脚本之类的操作?

  • 我认为你应该更改你的函数名称alert不与浏览器暴露的元素发生冲突的东西(有一个window.alert()功能)。也许这会按原样工作(未经测试),但最好避免混淆

  • 将事件绑定到处理程序的正确语法是检索对函数的引用(此处重命名)

    window.setTimeout(GetRef("showAlert"), 2000)

  • 可能是因为我没有足够的信息,但我不认为你需要WaitForAnEvent()功能。事件发生。您将函数绑定为在事件上执行,并在需要时将调用事件处理程序的工作留给浏览器

edited仅作为示例(改编自之前的答案)

在此 HTA 中,处理五个事件:按下开始按钮、按下停止按钮、按下退出按钮、时钟间隔和文件存在检查

基本思想是不要让代码一直运行。浏览器拥有控制权,当事件发生(按下按钮或达到间隔)时,将调用处理该事件的代码并结束。

<html>
<head>
<title>ClockwithAlerts</title>
<HTA:APPLICATION 
    ID="ClockHTA"
    APPLICATIONNAME="ClockHTA"
    MINIMIZEBUTTON="no"
    MAXIMIZEBUTTON="no"
    SINGLEINSTANCE="no"
    SysMenu="no"
    BORDER="thin"
/>

<SCRIPT LANGUAGE="VBScript">

Const TemporaryFolder = 2

Dim timerID, timerFile

Sub Window_onLoad
    window.resizeTo 600,280
    SetClockTimer True 
    timerFile = window.setInterval(GetRef("CheckFilePresence"), 1500)
End Sub

Sub CheckFilePresence
    Dim myFile
    With CreateObject("Scripting.FileSystemObject")
        myFile = .BuildPath(.GetSpecialFolder( TemporaryFolder ), "test.txt")
        If .FileExists(myFile) Then 
            fileStatus.innerText = "FILE ["& myFile &"] FOUND"
        Else
            fileStatus.innerText = "File ["& myFile &"] is not present"
        End If
    End With
End Sub 

Sub SetClockTimer( Enabled )
    If Enabled Then 
        timerID = window.setInterval(GetRef("RefreshTime"), 1000)
        RefreshTime
    Else 
        window.clearInterval(timerID)
        timerID = Empty 
    End If
    StartButton.disabled = Enabled
    StopButton.disabled = Not Enabled
End Sub

Sub RefreshTime
    CurrentTime.InnerHTML = FormatDateTime(Now, vbLongTime)
End Sub

Sub ExitProgram
    If Not IsEmpty(timerID) Then window.clearInterval(timerID)
    If Not IsEmpty(timerFile) Then window.clearInterval(timerFile)
    window.close()
End Sub

</SCRIPT>

</head>

<body>
    <input id="checkButton" type="button" value="EXIT" name="run_button" onClick="ExitProgram" align="right">
<br><br>
    <span id="CurrentTime"></span>
<br><br>
    <input id="Stopbutton"  type="button" value="Stop"  name="StopButton"  onclick="SetClockTimer(False)">
    <input id="StartButton" type="button" value="Start" name="StartButton" onclick="SetClockTimer(True)">
    <hr>
    <span id="fileStatus"></span>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SetTimeout() 不会执行该函数 的相关文章

  • 从 IE EPM BHO 内访问命名管道服务器

    我正在尝试对我们的旧产品进行一些更改 以支持 BHO 上的 IE EPM 我已经设法加载它并调用各种方法 SetSite DocumentComplete 等 当我尝试连接到 Windows 服务中运行的命名管道服务器时 我似乎遇到了障碍
  • 自动打开、更新和保存 Excel 工作簿

    我想在Excel中自动修改列的数字格式 Set excel CreateObject Excel Application Set oWB excel Workbooks Open E Docs Invoice csv Excel Macro
  • 如何使用 jquery 检测 IE11 [重复]

    这个问题在这里已经有答案了 我有代码 browser 来检测浏览器 并根据结果确定一些布局样式 但现在有了 ie 11 browser 将提供 mozilla v 11 有什么修复建议吗 尝试这个 var isIE11 navigator
  • Angularjs 的 $http.get 在 IE11 中只执行一次

    我正在学习 angularjs 作为一个测试项目 我正在轮询返回活动进程 它们的 pid 列表并显示这些的服务器 客户端代码如下所示
  • Jasmine:测试 setTimeout 函数抛出错误

    我想测试一个方法的错误处理 该方法使用 setTimeout 安排工作 该错误将在预定部分抛出 即 function sutWithSetTimeout setTimeout function throw new Error pang 1
  • 如何在“X”秒后调用 jquery 函数

    我有一个 jquery 函数 我需要在 Iframe 中打开网站后调用它 我正在尝试在 Iframe 中打开一个网络链接 打开它后我需要调用以下函数 那么我该怎么做呢 这是我的功能
  • 如何在 JavaScript 中获取 gif 图像的持续时间

    我只尝试显示一次 gif 所以我使用这段代码来实现这一点 var ui img document getElementById ui image ui img hidden false setTimeout function ui img
  • 如何在.net core或.net standard项目中运行VBScript?

    我知道这是死胡同而且愚蠢的想法 但仍然 您知道在 Net Core 或 Net Standard 项目中运行 VBScript 的任何 nuget 或解决方法吗 我尝试使用 ClearScript V8 nuget https www nu
  • 使用VBS脚本检查字符串是否包含特定字符

    我的脚本正在做以下几点 检索所有我选择的文件夹文件 按日期对它们进行分类 从最近的到较早的 在窗口中显示它们 这是我的 VBS 脚本 我检索它here http codes sources commentcamarche net sourc
  • IE11 和 Edge 中出现带有 border-radius 的幽灵“边框”

    在 IE11 和 Edge Windows 10 上 中 以下 HTML CSS 在不应该出现的地方显示奇怪的透明边框
  • adArray 的 VBScript / ADODB 语法问题?

    我希望有人能给我一些关于我的 vb 脚本的新视角 该脚本的主要目的是使用一些参数执行存储过程 我得到的错误是 预计声明结束 我没有做过太多的 VB 脚本编写 但从目前为止我发现的情况来看 这个错误是由于某种语法问题造成的 我已经查看这个脚本
  • 如何将 VBScript 转换为可执行 (EXE) 文件? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我四处寻找转换 VBScript 的信息 vbs 到可执行文件 并意识到大多数可用的工具实际上是将脚本包装在可执行文件中 尝试了一些工
  • 为什么进度条不像文本那样动态变化?

    我在之后动态更新一些元素setTimeout 功能 jQuery 函数 text 似乎在处理时随着数组索引的每次变化而动态更新 但是引导进度条正在通过以下方式更改 css and attr 好像没有动态更新 这是我的页面 您可以看到文本发生
  • setInterval 会导致浏览器挂起吗?

    几年前 我被警告不要使用setInterval很长一段时间 因为如果被调用的函数运行时间超过指定的时间间隔 可能会导致浏览器挂起 然后无法跟上 setInterval function foo bar i 1 现在 我知道在循环中添加大量代
  • VBScript 中的对象/类字典

    vbscript 中是否可以有对象 类的字典 例如 Class employeeclass Public first last salary End Class Dim employeedict Set employeedict Creat
  • jQuery POST 不使用 IE 11 提交表单值

    我已经尝试找到此问题的解决方案几个小时了 但以下代码根本不适用于 Internet Explorer 11 它适用于 Chrome 和 Firefox 使用 IE11 时 帖子已提交 但提交的表单为空
  • CreateObject() vbs 的对象列表

    我喜欢脚本 我不喜欢重新发明轮子 所以我喜欢 CreateObject您能给我指出一个可在 VBScript 上使用的广泛且有用的对象列表并附上简短说明吗 确实 我还没有找到超过 50 个的网站 提前致谢 我自己并不知道有这样的列表 但我知
  • 使用 VBScript 重命名 IIS 中的虚拟目录?

    如何使用 VBScript 重命名 IIS 6 0 7 0 中的虚拟目录 或 Web 应用程序 如果您只想更改 IIS 7 中的站点名称 编辑applicationHost config文件 该文件可以在以下位置找到c Windows Sy
  • 我对一些小概念感到困惑

    我对 VBscript 非常陌生 正在努力学习所有概念 在我的实践过程中 我一直有一个疑问 dim a b c set a CreateObject scripting filesystemobject initiate the file
  • clearTimeout 在 javascript 自动完成脚本中不起作用

    我使用以下代码作为自动完成脚本的一部分 以避免每次击键都会对服务器造成影响 var that this textInput bind keyup function clearTimeout that timer that timer set

随机推荐

  • 使用单个字符串查找多个文件路径

    我尝试编写一个批处理脚本来查找与输入字符串同名的文件的所有路径 现在它只能找到找到的第一个文件 我想不出一种方法让它列出多个文件位置 我经验不足 需要一些帮助 这是脚本代码的一部分 start cls echo Enter file nam
  • SQL-在一个字段中选择与另一字段中记录最高的不同记录

    在我有一个像这样的表的情况下 int id PK int staff id int skill id bit mainskill 我想为每位员工 由 Staff id 表示 仅选择一条记录 列出他们的主要技能 由 mainskill 中的
  • Visual Studio Code 中的 PHP 块快捷方式

    如何在 Visual Studio Code 中打开基本 PHP 块 如下所示 In Sublime Text https en wikipedia org wiki Sublime Text I simply type php and p
  • 时间格式说明(Google Directions API)

    我已阅读用于提出方向请求的 Google Directions API 文档 URL 的示例如下 http maps googleapis com maps api directions json origin Brooklyn desti
  • 在 Laravel 中使用 Socialite 登录后重定向到 URL

    我需要使用以下 URL 注册参加锦标赛 http laravel dev tournaments 1 register 该 URL 位于中间件 auth 中 因此如果用户未登录 他将被重定向到登录页面 我需要的是重定向到 http lara
  • 循环遍历多个 JObject 级别并将信息收集为字符串

    我使用以下代码从 URL 收集 Json 数据 var json new WebClient DownloadString http steamcommunity com id tryhardhusky inventory json 753
  • 使用 gdb 调试时彻底退出 valgrind

    我正在使用 valgrind 和 gdb 调试程序 然而 我以一种野蛮的方式终止了这些调试会话 这真的是它应该做的吗 设置调试会话 按照来自的指示valgrind 官方网站 http valgrind org docs manual man
  • 如何显示文件解压进度?

    我正在尝试找出一种方法来显示当前进度以及解压缩并将 zip 文件的内容写入磁盘的剩余时间 我目前正在使用此处找到的 ZipArchiver 类http code google com p ziparchive http code googl
  • Python pandas 插入长整型

    我正在尝试在 Pandas Dataframe 中插入长整数 import numpy as np from pandas import DataFrame data scores 6311132704823138710 273 26850
  • NEDB 文件存储在哪里?

    var Datastore require nedb db new Datastore filename testdb db autoload true var doc hello world n 5 today new Date nedb
  • 在 Google 电子表格上,如何称呼 IP 的城市、国家/地区?

    我想知道是否有一个公式 脚本可以在 Google 电子表格上使用来获取 IP 地址数组的城市 位置 也就是说 假设 A 列上的每个单元格都有 100 个 IP 地址 我应该在 B 列上使用什么公式 脚本来获取各自的城市和位置 最简单的方法是
  • Qt 调试器在 mac 上使用错误的 python 版本

    我使用的是 macOS Mojave 10 14 6 我的Qt版本是5 13 1 我的 Qt Creator 版本是 4 10 0 当我设置断点并运行应用程序时 调试器永远不会完成并打印到调试器日志并显示以下错误 因此 据我所知 lldb
  • iOS 复制和粘贴

    我正在创建一个应用程序 以便在我在 iOS 设备上复制某些内容时保存我复制的项目 无论如何 我是否可以创建一个事件 以便每当我从 iOS 设备上的任何应用程序复制某些内容时 它都会将其保存到我的应用程序中 我希望它在我复制文本时触发 以便将
  • 是否可以使用前导和跟踪来设置 Android 字体样式?

    android 字体样式中是否可以有以下内容 Leading http en wikipedia org wiki Leading 文本行之间的垂直空间 名称来自于机械印刷过程中用于分隔文本行的物理铅片 Tracking http en w
  • 什么是 Unicode、UTF-8 和 UTF-16?

    Unicode 的基础是什么 为什么需要 UTF 8 或 UTF 16 我在谷歌上研究过这个问题 也在这里搜索过 但我不清楚 In VSS https en wikipedia org wiki Microsoft Visual Sourc
  • cuda 共享内存 - 结果不一致

    我正在尝试并行缩减以对 CUDA 中的数组求和 目前我传递一个数组来存储每个块中元素的总和 这是我的代码 include
  • Log4J 仅将一个类附加到附加程序

    我需要定期轮询正在运行的应用程序的 JVM 内存统计信息 我正在运行一个服务来执行此操作并将统计信息写入根记录器 我对根记录器的使用与否没有太多控制权 我想要做的是将这些日志消息路由到单个附加程序 该附加程序应该只处理来自该类的日志消息 而
  • 如何在 python apache beam 中展平多个 Pcollection

    应该如何实现位于以下位置的以下逻辑 https beam apache org documentation pipelines design your pipeline https beam apache org documentation
  • 如何快速将 pandas 数据框行转换为ordereddict

    寻找一种快速方法将 pandas 数据框中的行放入有序字典中 而不使用列表 列表很好 但对于大数据集将花费很长时间 我正在使用 fiona GIS 阅读器 行是有序字典 其模式给出数据类型 我使用 pandas 来连接数据 在很多情况下 行
  • SetTimeout() 不会执行该函数

    这是我的代码片段 in VBScript Sub Main Dim timeoutTimer more scripts here more scripts here more scripts here timeoutTimer window