js 获取事件源
var node = evt.currentTarget || evt.srcElement||evt.target||evt.toElement;
ja.test((a.currentTarget||a.srcElement||a.target||a.toElement).readyStat
* 获取事件源
* @param ev
* @returns {*|Object}
*/
getSrcElement:function (ev) {
var event = window.event || ev;//兼容ie7 8
var eventTarget = event.srcElement || event.target || event.toElement|| event.currentTarget;
return eventTarget;
}
/**
* Given an event from a script node, get the requirejs info from it,
* and then removes the event listeners on the node.
* @param {Event} evt
* @returns {Object}
*/
function getScriptData(evt) {
//Using currentTarget instead of target for Firefox 2.0's sake. Not
//all old browsers will be supported, but this one was easy enough
//to support and still makes sense.
var node = evt.currentTarget || evt.srcElement|| evt.target || evt.toElement;
//Remove the listeners once here.
removeListener(node, context.onScriptLoad, 'load', 'onreadystatechange');
removeListener(node, context.onScriptError, 'error');
return {
node: node,
id: node && node.getAttribute('data-requiremodule')
};
}
判断是否应该执行回调函数
有两个条件:
- 必须不为空;
必须是函数
之前我一直使用下面的判断:
if (settings.blur_callback && typeof settings.blur_callback === 'function') {
e = e || window.event || arguments.callee.caller.arguments[0];
settings.blur_callback(e,this);
}
if (settings.keydown_callback && typeof settings.keydown_callback === 'function') {
e = e || window.event || arguments.callee.caller.arguments[0];
settings.keydown_callback(e,this);
}
if (callback && typeof callback === 'function') {
callback(com.whuang.hsj.imgURL);
}
后来我发现一个问题:
当callback没有声明时上述代码会报错.
所以我改进如下:
if (typeof settings.keydown_callback === 'function') {
e = e || window.event || arguments.callee.caller.arguments[0];
settings.keydown_callback(e,this);
}
if (typeof callback === 'function') {
callback(com.whuang.hsj.imgURL);
}