代码之家  ›  专栏  ›  技术社区  ›  Wayne Bloss

从Silverlight重写(IE7)浏览器键盘处理

  •  0
  • Wayne Bloss  · 技术社区  · 15 年前

    当我在Firefox中测试我的Silverlight 2应用程序时,当Silverlight有焦点时,通过page.keydown事件接收每一次按键都没有问题。

    当我在InternetExplorer7中测试它时,我只能得到浏览器尚未处理的键盘事件。但是,我可以在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 回复  |  直到 15 年前
        1
  •  2
  •   asgerhallas    15 年前

    从文档来看,这似乎是不可能的(至少没有像您提到的那样的javascript工作):

    键盘事件和浏览器 不同的浏览器可能会处理 键盘事件不同。当你 创建使用 键盘输入,确保测试 目标浏览器中的应用程序。

    浏览器决定 击键被解释为命令 它传递给哪个按键 托管内容。这意味着 无法检索某些按键 来自keydown和keyup事件处理程序 功能。大多数按键 浏览器将命令解释为 快捷键或加速器按键, 而不是作为关键事件传递给 西尔弗莱特例如,ctrl+d是 快捷键组合 向Firefox添加最喜爱的URL 和Internet Explorer浏览器,以及 ctrl和d都不报告为 关键事件。

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

    我想前几天我读到一篇关于底层HTML文本框的文章。但我不确定它是否仍然支持,或者细节是什么。如果我再找到它,我会回来的。

    阿舍尔

        2
  •  0
  •   Raul Agrait    15 年前

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