在JavaScript中,我需要检测某个select元素的值何时因任何原因,包括而以编程方式更改。
仅当用户手动更改所选值时才会触发onchange事件,当其他JavaScript以编程方式更改值时,不。
这是一个包含各种插件组件的网站,我们不想破解(在某些情况下不能黑客攻击,因为代码驻留在其他网站上)。 因此,只要有程序化更改,我自己就会触发更改事件。我需要实际监控select, listen ,以便更改值。
这可能吗?我还没找到办法。
是否有一些我可以用来频繁轮询价值寻找变化的库?或者其他一些方式?
答案 0 :(得分: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时间就越多,但是越快意识到它就会发生变化。小心调整。
答案 1 :(得分:0)
您可以使用MutationObservers API来监视对DOM的更改:
https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
您可能必须实际观察所选属性的option
节点,而不是观察父select
节点,但它应该一样容易。