2011-07-02 68 views
2
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事件为什么不起作用?

回答

3

它不起作用,因为onchange event用于表单域(当域值改变时它会触发)。当HTML发生更改时,它不会被触发,例如,用户在文本框中输入密钥时。

要知道页面上的某些内容何时发生更改,最好的办法是让代码在第一个位置发生更改,表示正在进行更改(可以通过某种事件广播完成此操作)。

如果你真的想这样做,这样,你可以使用一个计时器,定期轮询更改:

setInterval(ifChanged, 1000); // Check once every second (1000ms) 
3

document.body.innerHTML返回一个字符串和String.onChangeString.setEventListener('change', ...);是不确定的。 DOM 2引入了MutationEvents,DOM更改时会触发。不幸的是,这些事件并没有得到广泛的实施,可能是slow down every change in the DOM