我想遍历分页的Ajax表,并提取一些在交换后备图像之前存在的图像src
属性,并将它们存储在数组中。虽然我可以使用全局MutationObserver轻松监视对属性的更改,但我只想在用户单击特定按钮时才开始将其存储在目标数组中。单击时,我将遍历表,将变异的src
属性存储在数组中,然后在过程完成后停止存储,因此用户可以自由地手动遍历表,而无需进一步修改数组。
是否可以在函数内部初始化MutationObserver?如果是这样,我在下面的玩具示例中出了什么问题,它没有返回我期望的变异对象数组?似乎从未调用过cb
。
function test() {
var a = [];
colors = ['yellow', 'blue', 'red'];
var cb = function(mutations, observer) {
for (var mutation of mutations) {
console.log('In mutations loop:', a);
console.log(mutation);
// Here I would pull out the img src attribute
a.push(mutation);
}
};
var observer = new MutationObserver(cb);
observer.observe(document, {
attributes: true,
attributeOldValue: true,
childList: true,
subtree: true
});
for (var i=0; i < colors.length; i++) {
// For my motivating problem this loop would click through
// the table, triggering img src mutations.
console.log(colors[i]);
document.body.style.cssText = 'background:' + colors[i] + ';';
}
observer.disconnect();
console.log('a:', a);
return(a);
}
test()