这个onchange事件为什么不起作用?
问题描述:
if (!localStorage.text) localStorage.text = document.body.innerHTML;
function ifChanged() {
document.body.innerHTML.onchange = function() {
if (document.body.innerHTML !== (localStorage.text)) alert("No match");
};
}
ifChanged();
它不检查它是否改变。什么地方出了错?这个onchange事件为什么不起作用?
答
它不起作用,因为onchange
event用于表单域(当域值改变时它会触发)。当HTML发生更改时,它不会被触发,例如,用户在文本框中输入密钥时。
要知道页面上的某些内容何时发生更改,最好的办法是让代码在第一个位置发生更改,表示正在进行更改(可以通过某种事件广播完成此操作)。
如果你真的想这样做,这样,你可以使用一个计时器,定期轮询更改:
setInterval(ifChanged, 1000); // Check once every second (1000ms)
答
document.body.innerHTML
返回一个字符串和String.onChange
和String.setEventListener('change', ...);
是不确定的。 DOM 2引入了MutationEvents,DOM更改时会触发。不幸的是,这些事件并没有得到广泛的实施,可能是slow down every change in the DOM。