如何在对象javascript

时间:2016-02-12 08:51:00

标签: javascript

如何监控对象何时被分配onclick个属性? 我想在分配处理程序时收到通知。

<input type="text" id="test">

<script>
var testObj = document.getElementById('test');
console.log(testObj.onclick); // return null

testObj.onclick = function () { // assign handler
    console.log("Clicked !!");
}

console.log(testObj.onclick); // return function
</script>

3 个答案:

答案 0 :(得分:0)

尝试使用:

testObj.addEventListener("click",function () {
    console.log("Clicked !!");
});

以下是示例: https://jsbin.com/sewuyuyahu/edit?html,output

答案 1 :(得分:0)

尝试mutationObserver

var target = document.getElementById('test');

// create an observer instance
var observer = new MutationObserver(function(mutations) {
  mutations.forEach(function(mutation) {
    if ( mutation.type == "attributes" && mutation.attributeName == "onclick" )
    {
       console.log("onclick assigned");
    }
  });    
});

// configuration of the observer:
var config = { attributes: true };

// pass in the target node, as well as the observer options
observer.observe(target, config);

答案 2 :(得分:0)

我认为在调用addEventListenerelement.onlcik时会发生一个JavaScript触发的事件。

作为一种肮脏的解决方法,您可以调用另外一个自己的函数 通知/监控已添加的事件。

//Example

registerEvent(obj, eventname) {
    //save this for monitoring purpose.
}

//Notify here...
registerEvent(testObjet, 'onclick');
testObj.onclick = function () { // assign handler
    console.log("Clicked !!");
}