Firefox-如何模拟触发按键

时间:2019-05-06 20:52:29

标签: javascript firefox

我想使用触发器来模拟按键。我为Mozilla Firefox创建了自己的扩展程序。这是我的JavaScript代码:

class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true

  VALID_PHONE_NUMBER_REGEX = /\d{10}/ # your regex here
end

和HTML代码:

var obj = $("#description-frame").contents().find('body').get(0);
var pressEvent = document.createEvent("KeyboardEvent");
pressEvent.initKeyEvent("keypress", true, true, null, false, false, false, false, 20, 0);
obj.dispatchEvent(pressEvent);

但是它不能正常工作,我想-这对于iframe来说不是问题,因为我也在输入字段上测试了此代码,它也不起作用。 我认为,也许浏览器(Firefox)会阻止这些操作,但正如我们在此处看到的那样:https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events这应该是可能的。谁能告诉我哪里出了问题?

谢谢。

1 个答案:

答案 0 :(得分:0)

使用initKeyboardEvent代替文档中指示的initKeyEvent

  

event.initKeyEvent(特定于Ge​​cko,正在开发中的DOM 3事件规范,请改用initKeyboardEvent)
  https://developer.mozilla.org/es/docs/Web/API/Document/createEvent(翻译)

  var obj = $("#description-frame").contents().find('body').get(0);
  var pressEvent = document.createEvent("KeyboardEvent");
  pressEvent.initKeyboardEvent("keypress", true, true, null, false, false, false, false, 20, 0);
  obj.addEventListener('keypress', function(event) {
    console.log('Trigger');
  });
  obj.dispatchEvent(pressEvent);