Firefox中的文本框的onpropertychange?

时间:2009-05-28 06:15:25

标签: javascript events firefox dom mutation-events

如何使用JavaScript处理Firefox中文本框的onpropertychange

以下是一个例子:

var headerBGColorTextBox = document.getElementById('<%= tbHeaderBGColor.ClientID %>');

if (headerBGColorTextBox != null) {
  headerBGColorTextBox.pluggedElement = document.getElementById('<%= trHeaderBG.ClientID %>');
  headerBGColorTextBox.onpropertychange = function() {
    alert('function called');
    if (event.propertyName == 'style.backgroundColor' && event.srcElement.pluggedElement != null)
      alert(event.propertyName);
    event.srcElement.pluggedElement.style.backgroundColor = event.srcElement.style.backgroundColor;
  };
}

4 个答案:

答案 0 :(得分:5)

有两种模仿onpropertychange事件的方法,如上所述的Mutation事件应该在现代浏览器中同等地工作,而“object.watch”非标准方法将为旧版本的FF&lt; 3。

请参阅有关MDC的文档。

Object.watch

Mutation events

答案 1 :(得分:4)

好像onpropertychange事件是特定于IE的:http://www.aptana.com/reference/html/api/HTML.event.onpropertychange.html

然而,据说,Firefox,至少3.0.10确实支持一个名为“DOMAttrModified”的事件。以下是它如何工作的片段:

document.body.addEventListener("DOMAttrModified", function () { console.log ("Args: %o", arguments); }, false);
document.body.id = "Testing";

console.log假设已安装Firefox扩展程序Firebug

答案 2 :(得分:2)

onpropertychange是非标准的。见http://msdn.microsoft.com/en-us/library/ms536956

答案 3 :(得分:1)

以下代码有效:

var foo = '<%= tbHeaderBGColor.ClientID %>';

function changetext() 
  {
  alert('function called');
  if (event.propertyName == 'style.backgroundColor' && event.srcElement.pluggedElement != null)
    alert(event.propertyName);

  event.srcElement.pluggedElement.style.backgroundColor = event.srcElement.style.backgroundColor;
  }

if (!!document.addEventListener)
  {
  document.getElementById(foo).addEventListener("DOMAttrModified", changetext, false);
  }
else
  {
  document.getElementById(foo).addBehavior("foo.htc");
  document.getElementById(foo).attachEvent("onpropertychange", changetext);
  }

DOM Mutation Events