js 获取事件源

来源:互联网 发布:在淘宝不给退货怎么办 编辑:程序博客网 时间:2024/05/21 04:23

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')                };            }

判断是否应该执行回调函数

有两个条件:

  1. 必须不为空;
  2. 必须是函数

    之前我一直使用下面的判断:

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);            }
0 0