我想使用触发器来模拟按键。我为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这应该是可能的。谁能告诉我哪里出了问题?
谢谢。
答案 0 :(得分:0)
使用initKeyboardEvent代替文档中指示的initKeyEvent
event.initKeyEvent(特定于Gecko,正在开发中的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);