我正在努力使IE专用网站适应其他浏览器.例如,onpropertychange已被广泛使用,我正在使用MutationObserver来模拟该行为.
但是,我不能让MutationObserver对输入=文本字段的值更改做出反应,既不是程序更改也不是用户输入.
考虑:
<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适用于其他输入类型,具有隐藏字段值的事件.
这种行为在浏览器中是一致的.
有人知道如何观察文本字段的值变化吗?或者我必须以不同的方式处理这个问题?
解决方法
MutationObserve用于侦听DOM的更改,但是当您输入或删除某些字符时,您将看到属性值尚未更改.像这样:
name: <input type="text" id="name" value="ZJZHOME">
现在我们删除一些字符,现在值为“ZJZHO”:
var input = document.getElementById('name'); input.getAttributes('value') //alse "ZJZHOME" input.value // now is "ZJZHO"
您可以看到删除字符时没有更改DOM,因此,我们应该更改DOM …
input.oninput = function(e) { this.setAttribute('value',input.value) }
现在,变异观察者可以观察到表格字段状态的变化.
我希望你能理解我所说的…..我的英语很差……….