我有一组我想要运行的关键事件,但是从我的扩展程序中执行它们时遇到了一些麻烦。
目标是在触发自动完成列表的输入元素上触发这些事件,它将选择列表中的第一个:
var = document.getElementById(elementID);
// END KEY
var e = document.createEvent('KeyboardEvent');
e.initKeyEvent('keydown', true, true, window, false, false, false, false, 35, 0);
element.dispatchEvent(e);
var e = document.createEvent('KeyboardEvent');
e.initKeyEvent('keyup', true, true, window, false, false, false, false, 35, 0);
element.dispatchEvent(e);
// ARROW DOWN KEY
var e = document.createEvent('KeyboardEvent');
e.initKeyEvent('keydown', true, true, window, false, false, false, false, 40, 0);
element.dispatchEvent(e);
var e = document.createEvent('KeyboardEvent');
e.initKeyEvent('keyup', true, true, window, false, false, false, false, 40, 0);
element.dispatchEvent(e);
//ENTER KEY
var e = document.createEvent('KeyboardEvent');
e.initKeyEvent('keydown', true, true, window, false, false, false, false, 13, 0);
element.dispatchEvent(e);
var e = document.createEvent('KeyboardEvent');
e.initKeyEvent('keyup', true, true, window, false, false, false, false, 13, 0);
element.dispatchEvent(e);
如果我在萤火虫上运行它,那就完全符合我的要求。
但是当我从我的扩展程序中运行它时,我在控制台上出现了错误
拒绝访问属性'type'的权限 这指向该网站的jQuery文件。
我不明白是什么触发了这个错误,因为它在Firebug中没有麻烦。
发生这种情况的一个例子是在www.kayak.com上与巴黎的“From”字段。 elementID是“origin”。
关于为什么会发生这种情况的任何意见?
编辑2:
我一直在多个网站上对此进行测试以试图了解正在发生的事情,并且它总是在控制台上提供有关jQuery库文件的一些错误。在其中一个网站上,它不是一个缩小版本,并且能够看到错误是这段代码:
eventHandle = elemData.handle;
if (!eventHandle) {
elemData.handle = eventHandle = function (e) {
return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? jQuery.event.dispatch.apply(eventHandle.elem, arguments) : undefined;
};
eventHandle.elem = elem;
}
关于这是如何影响我试图从我的扩展程序发送的事件的任何想法?