如何使用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;
};
}
答案 0 :(得分:5)
有两种模仿onpropertychange事件的方法,如上所述的Mutation事件应该在现代浏览器中同等地工作,而“object.watch”非标准方法将为旧版本的FF&lt; 3。
请参阅有关MDC的文档。
答案 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);
}