问题描述
我正在尝试为 Chess.com 网站创建用户脚本。我需要检测页面上某些元素的 class 属性的变化。
我的问题简而言之:从 MutationObserver
的一般概念点(至少),有没有人有任何想法,这可能是什么原因?
更详细的问题:
我会在下面发布脚本,以防有人想尝试,但行为是这样的:
一个包含 3 个 MutationRecords 的数组被传递给观察者回调:
- 在第一条记录中,我们看到旧值与步骤 1 中的当前值相同(未标记为红色)(这是正常和预期的);
- 在第二条记录(更改 2)中,我们看到旧值是
piece bn dragging
,而前一条记录(标记块中的更改 1)的当前值是piece bn square-28
。 这意味着在 'square-28' 类已被删除和 'dragging' 类之间的某处已添加,并且没有报告对此的突变记录。第 3 步存在同样的问题。立>
一些额外的想法:
-
我试图在另一个虚拟页面上重现这种情况,但我失败了,总是报告更改(即使它们实际上没有发生,例如删除不存在的类时{{1 }}).
-
Firefox 和 Chrome 都具有相同的行为,因此看起来不是错误
-
不能在其他地方调用
elem.classList.remove('unexisting-class')
,因为在这种情况下,队列将完全为空,并且不会出现更改 1。显然,更改队列不是空的,但一些必须存在的更改却没有。 -
它不能是一个被覆盖的
observer.takeRecords()
,因为它似乎包含 [native Code],脚本中没有它的定义。
脚本是:
MutationObserver
我不知道为什么会这样,如果有人指出原因,我将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)