0

当我在Firefox中测试我的Silverlight 2应用程序时,Silverlight具有焦点时,通过Page.KeyDown事件接收每个按键都没有问题。Silverlight的Override(IE7)浏览器键盘处理

当我在Internet Explorer 7中测试它时,我只能得到浏览器尚未处理的键盘事件。但是,我可以重写在JavaScript中的这些相同的键盘事件。

例如,Ctrl + D。我可以通过以下操作覆盖javascript,但我无法在Silverlight中做同样的事情!

function initKeyHandling(){ document.attachEvent("onkeydown", keydown); } 

function keydown(e) { printToTextbox('Keydown ', e); return false; } 

... 

initKeyHandling(); 

此外,我尝试将事件从Javascript转发到Silverlight失败。我的javascript键盘事件处理程序在Silverlight焦点时从未被解雇。

回答

2

从文档看来,这是不可能的(至少在没有围绕像你提一个javascript工作):

键盘事件浏览器 不同的浏览器可能会以不同方式处理 键盘事件。当您创建使用 键盘输入的应用程序时,请务必在目标浏览器中测试 应用程序。

浏览器确定哪个 它将其解释为命令 以及它将哪些按键传递到 托管内容的击键。这意味着 某些击键无法从KeyDown和KeyUp事件处理程序 函数检索 。大多数浏览器解释为命令的击键是 快捷键或加速键击, ,并且不会作为键事件传递给 Silverlight。例如,CTRL + D是 的快捷键组合,用于 将最喜欢的URL添加到Firefox 和Internet Explorer浏览器,以及 既不将CTRL也不将D作为 关键事件报告。

看一看:http://msdn.microsoft.com/en-us/library/cc189015.aspx

我想我有一个基本的HTML文本框周围阅读有关工作的一天。但我不确定它是否仍然支持,或者细节是什么。如果我再次找到它,我会回来。

/Asger

0

我们遇到过使用Flash的类似问题,我们必须通过在同一页面上有一个单独的DIV标记来解决它们,我们必须以编程方式将焦点设置为每当需要调用我们的键盘快捷键时。

+0

如果我的用户可以在任何时候按下键盘快捷键,我总是必须专注于DIV,对吧?这听起来很疯狂! – 2009-04-20 22:13:06