我可以找到何时窗口.onclick()函数被覆盖
can I find when window.onclick() function overridden?
在javascript中,当一个函数属性从
发生变化时,是否可以创建一个事件处理程序?window.onclick = function() { ....function 1...... };
window.onclick = function() { ....function 2..... };
这是几年前,但它已经为我的伟大。几年前,一个SO用户发布了一个开源对象监视器。它修改对象原型,以便您监视对象的特定属性的更改。
window.watch('onclick', function() { console.log('changed'); });
window.onclick = function() { console.log('click1'); };
window.onclick = function() { console.log('click2'); };
JSFiddle: https://jsfiddle.net/gou48xpa/
源代码:https://gist.github.com/eligrey/384583(以MIT许可发布)
if (!Object.prototype.watch) {
Object.defineProperty(Object.prototype, "watch", {
enumerable: false
, configurable: true
, writable: false
, value: function (prop, handler) {
var
oldval = this[prop]
, newval = oldval
, getter = function () {
return newval;
}
, setter = function (val) {
oldval = newval;
return newval = handler.call(this, prop, oldval, val);
}
;
if (delete this[prop]) { // can't watch constants
Object.defineProperty(this, prop, {
get: getter
, set: setter
, enumerable: true
, configurable: true
});
}
}
});
}
// object.unwatch
if (!Object.prototype.unwatch) {
Object.defineProperty(Object.prototype, "unwatch", {
enumerable: false
, configurable: true
, writable: false
, value: function (prop) {
var val = this[prop];
delete this[prop]; // remove accessors
this[prop] = val;
}
});
}
为addEventlistener
或attachEvent
的自定义函数使用回调容器
element.attachEvent('onclick', handler);
或
element.addEventlistener('onclick', handler, false)
你可以把它包装成某个函数
相关文章:
- 覆盖函数中的函数
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- Javascript重新定义和覆盖现有的函数体
- 如何在javascript中覆盖函数的行为
- 覆盖Jquery's函数
- 如何在Extjs中覆盖lovcombo中的函数
- 如何覆盖Backbone's解析函数
- 如何通过 JQuery ajaxSend 事件覆盖成功函数
- 覆盖主干的解析函数
- 覆盖上下文.属性和函数
- 有没有办法覆盖 setTimeout 函数,使其使用微秒而不是毫秒
- 被覆盖的 setTimeout 变量中的函数
- 为什么某些原型函数覆盖有效而其他函数无效
- JavaScript - 使用包含异步回调但仍返回原始值的函数覆盖函数
- 带有knockout.js函数覆盖的Javascript
- Javascript函数覆盖原型
- 函数覆盖类,而不是添加新的
- 是否可以用自定义函数覆盖window.location函数
- javascript函数覆盖
- 有没有办法使用 jsp 中包含的 js 文件中的函数覆盖 jsp 中存在的 js 函数