我如何模拟键盘按钮按下时,用户单击asp按钮

本文关键字:按钮 用户 asp 单击 键盘 何模拟 模拟 | 更新日期: 2023-09-27 18:02:04

比如说我有一个asp按钮:

<asp:Button id="btnCustomDropDown"
Text="*"
OnClick="txtOutputRating_btnPressed" 
runat="server"/>

当用户按下那个按钮时,我想要按下一个键盘按钮。例如键盘上的向下键。我想在后台做一些类似的东西。这可能吗?

void txtOutputRating_btnPressed(Object sender, EventArgs e)
    {
        System.Windows.Forms.SendKeys.Send("{DOWN}");
    }

我如何模拟键盘按钮按下时,用户单击asp按钮

简短的回答是NO - it doesn 't work.

长一点的答案是…这完全取决于你的软件栈(例如,你正在运行的web服务器)。

在IIS下,您的代码将运行,但没有效果。IIS(我相信)是作为一个不允许有UI交互的服务运行的。

如果你使用的是VS dev服务器,那么你的代码可能只能在你的本地机器上运行。

即使你找到了一个生产就绪的web服务器,它允许UI交互来托管你的页面,你的后台代码也运行在服务器上。没有客户端web浏览器API来向系统中注入按键。

试试从这个线程中借来的JS代码

<asp:Button OnClientClick="pressDown();" />
<script>
    var keyboardEvent = document.createEvent("KeyboardEvent");
    var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";
    function pressDown() {
        keyboardEvent[initMethod](
           "keydown", // event type : keydown, keyup, keypress
            true, // bubbles
            true, // cancelable
            window, // viewArg: should be window
            false, // ctrlKeyArg
            false, // altKeyArg
            false, // shiftKeyArg
            false, // metaKeyArg
            40, // keyCodeArg : unsigned long the virtual key code, else 0
            0 // charCodeArgs : unsigned long the Unicode character associated with the depressed key, else 0
        );
        document.dispatchEvent(keyboardEvent);
    }
</script>