【问题标题】:Dispatching a key event in Firefox 12在 Firefox 12 中调度关键事件
【发布时间】:2012-05-06 14:58:18
【问题描述】:

我曾经在 FireFox 10 和 11 中调度一个关键事件。最近我将我的浏览器更新到 FireFox 12 并且调度停止工作。

Here is a sample code 我做了什么。

在 Firefox 11 或更低版本中运行时,可以在文本框中找到打印的字符。

为什么它在 Firefox 12 中不起作用,我该如何解决?也可以采用任何替代解决方案。

【问题讨论】:

  • 怎么了?事件触发:jsfiddle.net/EshwS/5
  • 它在FF 12中不起作用。这里有几台机器,我检查了所有机器。它适用于 FF 11、10、9,...
  • 定义“不起作用”。在我的演示中,在 FF 12.0 中,会显示一条警报:i.stack.imgur.com/rxxwd.png
  • 在旧版本中,此代码在输入中打印 1740 字符,而在新版本的 FF 中输入保持为空。
  • 你想这样做是为了什么目的?单元测试?为什么不只是引用输入节点并应用一个值来填充它?

标签: javascript dom-events keypress dispatchevent


【解决方案1】:

为什么不在页面加载时将值(字符#1740)分配给输入框?喜欢:

$('#name').val(String.fromCharCode(1740))​; 

this jsfiddle

【讨论】:

    【解决方案2】:

    用一个空输入检查我的小提琴,观察按键事件,然后在输入“A”时替换输入...试试看

    编辑:这在其他浏览器中可能会有所不同,但在 Firefox 和 Chrome / Chromium 等现代浏览器中对我有用...持有者 IE 在观察事件时可能表现不同

    编辑 2:更新 fiddle rev 1 以也像您建议的那样保存全局映射...一个小旁注:某些浏览器可能不支持从 event.keyCode 检索输入的密钥代码,因此请检查 event.which 以及(jQuery会将它们组合成event.which,并且还可以让您轻松地观察按键跨浏览器)。

    fiddle

    【讨论】:

    • Korgh: 这是你的错误: 1. 按'A' 2. 选择输入文本 3. 再次按'A' 输入文本应该用新按下的键字符 (1740) 替换,但是你会在输入中看到两个 1740 字符。
    • 首先是 Krogh 而不是 Korgh...其次:错误?这不像您直接要求它或提供了您想要的代码示例...我只是想帮助您并让您了解如何开始...查看我的描述我的小提琴的代码是绝对正确的......我从来没有说过要为你建立一个完全有效的解决方案,是吗? (否定投票意味着这是一个错误/错误的答案,但事实并非如此)
    • 我什至对你的问题投了赞成票,所以它获得了 0 而不是 -1 来获得更多关注,所以我们得到了一个很好的答案......但将“错误”归咎于我(这是'没有任何关于小提琴)是卑鄙的
    • 我从不投票给你,伙计!我提到了您的建议中的一个错误,我的意思是,该解决方案存在问题。我试图应用您的解决方案并替换我的方法。非常感谢 Tobias 的帮助和关注,请原谅我的语法错误。
    【解决方案3】:

    这是他们在BugZilla 中的回答。出于安全原因,调度关键事件似乎不再被拒绝:

    请注意 initKeyEvent() 仍然有效。编辑只是拒绝当前规范中的安全性和不清楚的关键事件。

    但我仍然无法理解为什么我的调度事件不受信任。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-20
      • 2010-12-30
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      相关资源
      最近更新 更多