为什么这个onchange事件不起作用?

时间:2011-07-02 16:29:47

标签: javascript

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();

它不会检查它是否发生了变化。出了什么问题?

2 个答案:

答案 0 :(得分:4)

它不起作用,因为onchange event用于表单字段(当字段的值更改时会触发)。 HTML 更改时不会触发,例如,当用户在文本框中键入键时。

了解页面上某些内容发生变化的最佳方法是让首先进行更改的代码表示正在进行更改(这可以通过某种事件广播来干净地完成)。 / p>

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

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

答案 1 :(得分:4)

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