DOMAttrModified不会触发

时间:2012-05-02 17:25:58

标签: javascript events firefox dom javascript-events

我正在尝试在脚本修改input元素(文本字段)时触发事件处理程序。在Internet Explorer上,我可以使用onpropertychange事件,但在Firefox和其他浏览器上不是这样的事。所以,根据W3C docs,似乎DOMAttrModified事件完全符合我的要求。但它并没有在Firefox 11中发射。

这是一个简单的代码片段,可以重现问题。我有一个输入文本字段,以及一个向输入文本字段的value属性添加字符的按钮。点击add char按钮会导致DOMAttrModified事件触发:

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript">
            function addChar() {
                var q = document.getElementById("query");
                q.value += "X";
            }

            function loadevents() {
                var q = document.getElementById("query");
                q.addEventListener("DOMAttrModified", function() {alert("DOMAttrModified event!");
                }, false);
            }
        </script>
    </head>
    <body onLoad="loadevents()">
        <input type="text" id="query">
        <br>
        <input type="submit" value="add char" onclick="addChar()">
    </body>
</html>

但事实并非如此。知道我做错了什么吗? (我知道DOM Level 3 弃用这个事件,但现在似乎没有可行的替代方案。据我所知,Firefox 11仍然支持它。)

1 个答案:

答案 0 :(得分:7)

更改输入中的值不会触发DOMAttrModified事件,这就是全部..

您需要更改输入节点的属性,而不是变量的属性
 这就像difference between the two jQuery functions: .prop and .attr

阅读: