首先,为了
点击
事件,需要创建类型为的事件对象
MouseEvents
不是
HTMLEvents
及使用
event.initMouseEvent
而不是
event.initEvent
.
访问
document
在xul覆盖的firefox的当前选项卡中,您可以使用
content.document
属性,但由于您已经可以访问要单击的DOM元素,因此可以使用
Node.ownerDocument
属性,它将引用顶级
文件
此节点的对象。
我做了一个简单的函数来模拟
MouseEvents
:
function triggerMouseEvent(element, eventName, userOptions) {
var options = { // defaults
clientX: 0, clientY: 0, button: 0,
ctrlKey: false, altKey: false, shiftKey: false,
metaKey: false, bubbles: true, cancelable: true
// create event object:
}, event = element.ownerDocument.createEvent("MouseEvents");
if (!/^(?:click|mouse(?:down|up|over|move|out))$/.test(eventName)) {
throw new Error("Only MouseEvents supported");
}
if (typeof userOptions != 'undefined'){ // set the userOptions
for (var prop in userOptions) {
if (userOptions.hasOwnProperty(prop))
options[prop] = userOptions[prop];
}
}
// initialize the event object
event.initMouseEvent(eventName, options.bubbles, options.cancelable,
element.ownerDocument.defaultView, options.button,
options.clientX, options.clientY, options.clientX,
options.clientY, options.ctrlKey, options.altKey,
options.shiftKey, options.metaKey, options.button,
element);
// dispatch!
element.dispatchEvent(event);
}
用途:
triggerMouseEvent(element, 'click');
检查测试使用情况
here
.
如果要更改
event object
性质。