如何监视带有JavaScript突变的特定ID在屏幕上何时显示?

时间:2019-02-16 17:30:20

标签: javascript

我正在使用一种幻灯片播放的网站,但几秒钟后未显示“下一个”链接。我想做一个脚本,该脚本在链接出现后立即单击。

我研究并发现了“突变”,但是我对javascript的了解很少。这就是我到目前为止所得到的。我要单击的链接在chrome中显示为:

a href="#" class="btn btn-step-active" id="btn-next-step">Next

代码:

function clickButton() {
    document.getElementById('btn-next-step').click();
}

const app = document.querySelector('#btn-next-step');

const observer = new MutationObserver((mutations) => {
  mutations.forEach((mutation) => {
    if (mutation.addedNodes) {
      const nextStepAdded = [...mutation.addedNodes].some((node) => node.className === 'btn btn-step active');
      if (nextStepAdded) {
        clickButton();
      }
    }
  });
});

observer.observe(app, { childList: true, subtree: true });

但是,这似乎不起作用,我收到错误消息“未能在mutationobserver上执行观察:参数1不是节点类型”。有什么想法吗?

编辑:看来错误是由于链接不存在而引起的...这就是我试图做的全部目的。但是我放置了一个父ID,该ID在页面加载时实际存在,现在可以正常工作!

1 个答案:

答案 0 :(得分:1)

observer.observe的第一个参数必须是一个节点,该节点是您要查找的节点的祖先,而不是节点本身。

类似的东西:

observer.observe(document.body, ....)