【问题标题】:Specify which element triggered MutationObserver on multiple elements指定哪个元素在多个元素上触发了 MutationObserver
【发布时间】:2021-12-27 15:51:02
【问题描述】:

在以下SO-post 的帮助下,我知道可以使用单个MutationObserver-object 跟踪多个元素。我想在一个网站上跟踪两个元素的文本,所以我写了以下脚本:

var seconds = document.getElementsByClassName('sr-lmt-0-ms-countdown__time srt-primary-7 srm-large')[2];
var minutes = document.getElementsByClassName('sr-lmt-0-ms-countdown__time srt-primary-7 srm-large')[3];


var callback = function(mutations) {
    for (var mutation of mutations) {
            // do something
            // console.log(mutation + (minutes or seconds));
        }
    };

var observer = new MutationObserver(callback);
var config = {characterData: true, subtree: true};

observer.observe(minutes, config);
observer.observe(seconds, config);

如何更改此脚本,以便控制台显示哪个变量触发了MutationObserver

编辑

如果我检查 mutation.target 我会看到以下内容:

我不知道是sec 还是minutes 触发了突变?我该如何区分?

【问题讨论】:

  • mutation.target
  • 你看the specification of MutationObserver了吗?都在那里。
  • @RandyCasburn 我添加了mutation.target 的输出,但我仍然不清楚
  • @amn,公平地说,我做到了,但我正在努力解决
  • 感谢您迄今为止的宝贵时间。我知道一个元素会触发一个突变事件。我定义了两个vars,每个代表DOM 中的不同元素。我想知道是哪一个。如果我检查两个元素的文本,它可以是任何一个; 1 可以代表一秒或一分钟。如果我查看.parentElement 属性,我会看到sr-lmt-0-ms-countdown__time srt-primary-7 srm-large。使用上述和document.getElementsByClassName() 定位的元素共有 4 个。我们如何识别由minutesseconds 引起的突变事件?我不明白如何

标签: javascript mutation-observers


【解决方案1】:

let observer = new MutationObserver(mutationRecords => {
  console.log(mutationRecords); // console.log(the changes)
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多