(Phiên bản sửa đổi để làm cho nó hoạt động mà không có mẫu.j.j)
function simulate(element, eventName)
{
var options = extend(defaultOptions, arguments[2] || {});
var oEvent, eventType = null;
for (var name in eventMatchers)
{
if (eventMatchers[name].test(eventName)) { eventType = name; break; }
}
if (!eventType)
throw new SyntaxError('Only HTMLEvents and MouseEvents interfaces are supported');
if (document.createEvent)
{
oEvent = document.createEvent(eventType);
if (eventType == 'HTMLEvents')
{
oEvent.initEvent(eventName, options.bubbles, options.cancelable);
}
else
{
oEvent.initMouseEvent(eventName, options.bubbles, options.cancelable, document.defaultView,
options.button, options.pointerX, options.pointerY, options.pointerX, options.pointerY,
options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, options.button, element);
}
element.dispatchEvent(oEvent);
}
else
{
options.clientX = options.pointerX;
options.clientY = options.pointerY;
var evt = document.createEventObject();
oEvent = extend(evt, options);
element.fireEvent('on' + eventName, oEvent);
}
return element;
}
function extend(destination, source) {
for (var property in source)
destination[property] = source[property];
return destination;
}
var eventMatchers = {
'HTMLEvents': /^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/,
'MouseEvents': /^(?:click|dblclick|mouse(?:down|up|over|move|out))$/
}
var defaultOptions = {
pointerX: 0,
pointerY: 0,
button: 0,
ctrlKey: false,
altKey: false,
shiftKey: false,
metaKey: false,
bubbles: true,
cancelable: true
}
Bạn có thể sử dụng nó như thế này:
simulate(document.getElementById("btn"), "click");
Lưu ý rằng với tư cách là tham số thứ ba, bạn có thể chuyển vào 'tùy chọn'. Các tùy chọn bạn không chỉ định được lấy từ defaultOptions (xem phần dưới của tập lệnh). Vì vậy, nếu bạn muốn chỉ định tọa độ chuột, bạn có thể làm một cái gì đó như:
simulate(document.getElementById("btn"), "click", { pointerX: 123, pointerY: 321 })
Bạn có thể sử dụng một cách tiếp cận tương tự để ghi đè các tùy chọn mặc định khác.
Tín dụng nên đi đến kangax . Đây là nguồn ban đầu (cụ thể là nguyên mẫu).