65.9K
CodeProject 正在变化。 阅读更多。
Home

捕获击键并进行回发

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

2分钟阅读

viewsIcon

6790

捕获按键并执行回发。随着 Web 2.0 的出现,客户对

捕获击键并进行回发

随着 Web 2.0 的出现,客户对交互式 Web UI 的要求越来越高。随着应用程序从桌面迁移到 Web,最终用户要求 Web 应用程序提供与他们在旧桌面应用程序中相同的观感。这包括桌面应用程序提供的按键组合,用于执行一些快速任务,例如“保存”、“编辑”等。在 Web 应用程序中提供此功能有点棘手,但可以使用 JavaScript 来完成。

首先,要捕获用户在使用网页时按下某个键时发生的按键事件。

方法如下。

<script type="text/javascript">

document.onkeyup = KeyCheck;

functionKeyCheck(e)

{

varKeyID = (window.事件) ? 事件.keyCode : e.keyCode;

alert("KeyId="+KeyID);

}

</script>

KeyID 将为您提供一个数字,指示按下了哪个键。 您可以根据 KeyID 的值构建逻辑。您还可以使用键组合,如“cntrl+S”等。

以下代码经过编写和测试,可以针对各种按键事件执行回发。

首先将此 JavaScript 添加到您的页面。

<script type="text/javascript">

document.onkeyup = KeyCheck;

functionKeyCheck(e)

{

varKeyID = (window.事件) ? 事件.keyCode : e.keyCode;
switch(KeyID)

{

大小写 113:

__doPostBack('__Page','F2') ;

break;

大小写 118:

__doPostBack('__Page','F7') ;

break;

大小写 119:

__doPostBack('__Page','F8') ;

break;

大小写 120:

__doPostBack('__Page','F9') ;

break;

大小写 121:

__doPostBack('__Page','F10') ;

break;

大小写 122:

__doPostBack('__Page','F11') ;

break;

大小写 123:

__doPostBack('__Page','F12') ;

break;

大小写 16:

__doPostBack('__Page','Shift') ;

break;

大小写 17:

__doPostBack('__Page','Ctrl') ;

break;

大小写 18:

__doPostBack('__Page','Alt') ;

break;

大小写 19:

__doPostBack('__Page','Pause') ;

break;

大小写 37:

__doPostBack('__Page','ArrowLeft');

break;

大小写 38:

__doPostBack('__Page','ArrowUp') ;

break;

大小写 39:

__doPostBack('__Page','ArrowRight');

break;

大小写 40:

__doPostBack('__Page','ArrowDown') break;

}

}

</script>

此脚本执行回发,并将按下的键的名称作为请求对象中“Request["__EVENTARGUMENT"]”键的值传递。

为了使“__doPostBack”工作,我们必须在页面加载期间注册回发事件引用。 以下代码说明了如何完成
受保护的 voidPage_Load(objectsender,EventArgse)

{

Page.ClientScript.GetPostBackEventReference(this, "");

字符串eventArgs = Request["__EVENTARGUMENT"];if(!字符串.IsNullOrEmpty(eventArgs))

{

switch(eventArgs)

{

大小写 "F7":

DoF7();

break;

大小写 "F8":

DoF8();

break;大小写 "F9":

DoF8();

break;

大小写 "F10":

DoF8();

break;

}

}

}

根据在 Request["__EVENTARGUMENT"] 中收到的值,我们可以在回发期间采取适当的措施。

© . All rights reserved.