我正在努力使特定于 IE 的网站适应其他浏览器。例如,onpropertychange 已被广泛使用,我正在使用 MutationObserver 来模拟该行为。
但是,我无法让 MutationObserver 对 input=text 字段的值更改做出反应,无论是对编程更改还是用户输入。
考虑:
<input type="text" name="test1" id="test1" />
和
var config = { attributes: true, childList: true, characterData: true, subtree: true };
var observer = new MutationObserver(function() { alert('success'); } );
observer.observe(document.getElementById('test1'), config);
如果我尝试通过 document.getElementById('test1').value = 'something' 或键盘输入更改值,则不会发生任何事情。
但是,如果我尝试更改元素的其他内容,例如它的 id 或名称(通过 JavaScript),MutationObserver 就会触发。
值更改和 MutationObserver 可以与其他输入类型、带有隐藏字段值的事件一起正常工作。
这种行为在浏览器中是一致的。
有人知道我如何观察文本字段的值变化吗?还是我必须以不同的方式处理这个问题?