2

在 JavaScript 中,我需要检测某个选择元素的值何时因任何原因(包括以编程方式)发生更改。

onchange 事件仅在用户手动更改所选值时触发,而不是在其他 JavaScript 以编程方式更改值时触发。

这是一个包含各种我们不想破解的插件组件的网站(在某些情况下无法破解,因为代码驻留在其他网站上)。因此,每当有程序更改时自己触发更改事件不是一种选择。我需要实际监控选择,聆听它,以了解价值的变化。

这可能吗?我还没有找到方法。

是否有一些库我可以用来经常轮询寻找变化的价值?还是其他方式?

4

2 回答 2

3
var targetSelect = $('appropriate selector');
var lastVal = targetSelect.val();

setInterval(function() {
    var newVal = targetSelect.val();
    if(newVal !== lastVal) {
        // it changed, fire an event or process it
    }
    lastVal = newVal;
}, intervalSpacing);

您传递给“intervalSpacing”的值越低,您花费的 CPU 时间就越多,但您越早意识到它发生了变化。谨慎调音。

于 2013-10-17T16:31:37.657 回答
0

你可以使用 MutationObservers API 来观察 DOM 的变化:

https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

您可能必须实际观察option所选属性的节点,而不是观察父select节点,但这应该同样简单。

于 2013-10-17T17:05:30.013 回答