我有一组要运行的关键事件,但是从我的扩展程序中执行它们时遇到了一些麻烦。
目标是在触发自动完成列表的输入元素上触发这些事件,它将选择列表中的第一个:
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);
如果我在萤火虫上运行它,它正是我想要的。
但是当我从我的扩展程序运行它时,我在控制台上收到一个错误,上面写着
拒绝访问指向该网站的 jQuery 文件的属性“类型”的权限。
我不明白是什么触发了该错误,因为它在 Firebug 中没有任何麻烦。
发生这种情况的一个例子是 www.kayak.com 上的“发件人”字段中的 Paris。elementID 是“原点”。
关于为什么会发生这种情况的任何意见?
编辑:通过对此类错误的额外研究,这似乎通常与同源政策问题有关,但我无法从我的扩展中弄清楚这是如何发生的。我可以找到该元素,但是在运行关键事件时,它不断给出该错误。
编辑 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;
}
关于这如何妨碍我试图从我的扩展发送的事件的任何想法?