onpropertychange для текстового поля в Firefox? - PullRequest
3 голосов
/ 28 мая 2009

Как обработать onpropertychange для текстового поля в Firefox, используя JavaScript?

Ниже приведен пример:

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 ]

5 голосов
/ 28 мая 2009

Есть два способа имитировать событие onpropertychange: события Mutation, как упомянуто выше, которые должны одинаково работать в современных браузерах, и нестандартный метод object.watch, который обеспечит поддержку старых версий FF <3. </p>

См. Документацию по MDC.

Object.watch

События мутации

4 голосов
/ 28 мая 2009

Похоже, что событие 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 голосов
/ 28 мая 2009

onpropertychange нестандартно. Смотри http://msdn.microsoft.com/en-us/library/ms536956

1 голос
/ 05 января 2012

работает следующий код:

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

...