Javascript firefox加载项错误的关键事件:访问属性“type”的权限被拒绝
我有一组我想运行的关键事件,但在扩展中执行这些事件时遇到了一些困难 目标是在触发自动完成列表的输入元素上触发这些事件,并选择列表中的第一个:Javascript firefox加载项错误的关键事件:访问属性“type”的权限被拒绝,javascript,jquery,firefox-addon,firebug,Javascript,Jquery,Firefox Addon,Firebug,我有一组我想运行的关键事件,但在扩展中执行这些事件时遇到了一些困难 目标是在触发自动完成列表的输入元素上触发这些事件,并选择列表中的第一个: var = document.getElementById(elementID); // END KEY var e = document.createEvent('KeyboardEvent'); e.initKeyEvent('keydown', true, true, window, false, false, false, false, 35,
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);
如果我在firebug上运行这个,它会完全满足我的要求
但是当我从扩展运行它时,控制台上会出现一个错误
访问属性“type”的权限被拒绝
wich指向该网站的jQuery文件
我不明白是什么触发了这个错误,因为它在Firebug中工作没有任何麻烦
发生这种情况的一个例子是www.kayak.com,Paris在From字段。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;
}
关于这是如何妨碍我尝试从分机发送的事件的,有什么想法吗?
var e = document.createEvent('KeyboardEvent');
与
解决了
多亏了Dagger@extdev irc.mozilla.org你是如何触发这段代码的?我在上下文菜单项的扩展中测试了它,它似乎对我来说工作正常,没有任何错误。我在pageload上触发它。我用一个单词填充输入,然后调用那块代码来触发自动完成,但是什么都没发生,控制台上出现了一堆错误-。我试着在弹出面板上做同样的事情,但我得到了完全相同的错误。
var doc = gBrowser.selectedBrowser.contentDocument;
var e = doc.createEvent('KeyboardEvent');