clay-core
Version:
Provide a more friendly web-side drawing interface!
57 lines (45 loc) • 1.51 kB
JavaScript
_clay_prototype.bind = function (eventType, callback) {
var flag;
if (window.attachEvent)
for (flag = 0; flag < this.length; flag++)
// 后绑定的先执行
this[flag].attachEvent("on" + eventType, callback);
else
for (flag = 0; flag < this.length; flag++)
// 捕获
this[flag].addEventListener(eventType, callback, false);
return this;
};
_clay_prototype.trigger = function (eventType) {
var flag, event;
//创建event的对象实例。
if (document.createEventObject) {
// IE浏览器支持fireEvent方法
event = document.createEventObject();
for (flag = 0; flag < this.length; flag++) {
this[flag].fireEvent('on' + eventType, event);
}
}
// 其他标准浏览器使用dispatchEvent方法
else {
event = document.createEvent('HTMLEvents');
// 3个参数:事件类型,是否冒泡,是否阻止浏览器的默认行为
event.initEvent(eventType, true, false);
for (flag = 0; flag < this.length; flag++) {
this[flag].dispatchEvent(event);
}
}
return this;
};
/*
************************************
* 事件相关计算方法
*/
// 获取鼠标相对特定元素左上角位置
_clay_prototype.position = function (event) {
var bounding = this[0].getBoundingClientRect();
return {
"x": event.clientX - bounding.left,
"y": event.clientY - bounding.top
};
};