簡體   English   中英

IE:通過 DOM 元素屬性綁定處理程序時觸發 onproperty 更改

[英]IE: onproperty change triggered when binding the handler by DOM element properties

這個問題是出於好奇。 我正在開發一個插件並在為其創建演示頁面時遇到了這個問題。

我有如下所示的div元素,

<div id="test">Test</div>

以及如下所示的處理程序函數,

function onPropChange () {
    alert('Property changed for ' + window.event.srcElement.nodeName + 
          ' event ' +  window.event.type);

}

現在嘗試像下面這樣綁定處理程序,

document.getElementById('test').onpropertychange = onPropChange;

在綁定時,這會觸發 'propertychange' 事件,從而執行處理程序。

演示: http : //jsfiddle.net/EEGcz/4/

有誰知道為什么? 我正在使用 IE8

同樣適用於 attachEvent - http://jsfiddle.net/maeRg/

查看 event.propertyName,您可以看到您的 className 是第二個示例中已更改的屬性,但第一個示例通過使用 test.onpropertychange 而不是 attachEvent 附加到它的行為來觸發事件。 所以在第一個例子中,propertyName 是“onpropertychange”。

試試這個修改,看看第一種類型的事件綁定實際上是如何觸發事件本身的。

var i = 1;
function onPropertyChange() {
    alert('Property changed called ' + i++ + ' for ' + (window.event.propertyName));
    }
var test =  document.getElementById('test');
// play with commenting and uncommenting out the following two lines
//test.onpropertychange = onPropertyChange;
test.attachEvent("onpropertychange", onPropertyChange);

test.className = 'test2';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM