【问题标题】:Close an HTA when the user presses the 'Esc' key当用户按下“Esc”键时关闭 HTA
【发布时间】:2015-06-23 14:11:10
【问题描述】:

我正在尝试捕获按键操作,以便在用户按下 Esc 键时关闭我的 HTA。

我已经确认onKeyUp 事件有效(我还捕获了输入的长度),并且下面的示例无效(通过添加未触发的MsgBox)。

我在这里错过了什么?

Sub window_onKeyUp()

    If window.event.keyCode = 27 Then
        Call CloseHTA()
    End If

End Sub

【问题讨论】:

    标签: vbscript hta onkeyup


    【解决方案1】:

    这对我有用。

    <script language="VBScript">
        Sub TestKey()
            intKeyCode = Window.Event.Keycode
            If intKeyCode = 27 Then Window.Close
        End Sub
    </script>
    
    <body onkeyup="TestKey">
    </body>
    

    编辑:

    或者,如果您想在&lt;body&gt; 标记之后包含您的代码,您可以使用Document_OnKeyUp()

    <body>
    </body>
    
    <script language="VBScript">
        Sub Document_OnKeyUp()
            intKeyCode = Window.Event.Keycode
            If intKeyCode = 27 Then Window.Close
        End Sub
    </script>
    

    【讨论】:

    • 谢谢,这确实有效,但这意味着我必须为此功能包含一个单独的 &lt;script&gt; 块。有没有办法在 VBS 中将其声明为事件? window_onLoadwindow_onBeforeUnload 之类的东西可以正常工作。
    • 为什么不直接将Sub TestKey() 添加到现有的脚本块中?为了完整起见,我只是以这种方式展示它。
    • 我所有的块都在文档的页脚中。显示一个初始页面,然后代码工作,这很神奇,因为我操纵显示(显示/隐藏 div,更改背景颜色等),此代码必须在 HTML 之后声明,否则它会失败。
    • 我明白了。是的,您可以改用Document_OnKeyUp()。我会更新我的答案。
    • 谢谢,太完美了。我试过document.body_onKeyUp()(错误)并设置了一个对象Set docBody = doucment.bodydocBody_onKeyUp()(没用),但没想到这个简单得令人眼花缭乱的解决方案!
    【解决方案2】:

    你可以这样试试:

    <html>
    <script language="VBScript">
        Sub TestKey()
            intKeyCode = Window.Event.Keycode
            If intKeyCode = 27 Then Call CloseHTA()
        End Sub
        Sub CloseHTA()
            self.close
        End Sub
    </script>
    
    <body onkeyup="TestKey">
    </body>
    </html>
    

    【讨论】:

    • 你有两个关闭的&lt;/script&gt;标签。
    • 我明白你的意思,感谢您花时间回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 2010-10-13
    • 2020-10-08
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多