щелчок не обнаруживает присутствие элемента - PullRequest
0 голосов
/ 01 июня 2018

Привет,

Мне нужен javascript, чтобы щелкнуть элемент html, но он сразу не появляется в DOM, поэтому у меня есть этот код:

document.addEventListener("DOMContentLoaded", function(event) {
  // Select the node that will be observed for mutations
  var parentOfMyList = document.body;

  // Options for the observer (which mutations to observe)
  var config = {
    attributes: true,
    childList: true,
    subtree: true
  };

  // Callback function to execute when mutations are observed
  var callback = function(mutationsList) {
    for (var mutation of mutationsList) {
      if (mutation.type == 'childList') {
        var elt = document.getElementById("topcmm-123flashchat-main-toolbar-message-type-option");
        if (elt) {
            setTimeout(document.getElementById("topcmm-123flashchat-main-toolbar-message-type-option").click, 6000);

          observer.disconnect();
        }
      }
    }
  };

  // Create an observer instance linked to the callback function
  var observer = new MutationObserver(callback);
  observer.observe(parentOfMyList, config);
});

, но я получаю сообщение об ошибке'click' called on an object that does not implement interface HTMLElement.Это почему?Элемент должен быть ТАМ к моменту выполнения click () (я даже даю ему 6 секунд, чтобы наверстать упущенное).

Спасибо.

1 Ответ

0 голосов
/ 01 июня 2018

Это не имеет ничего общего с наблюдателем мутаций.Элемент есть, но вы не вызываете метод click() для него.Поскольку вы не привязали метод к элементу, он вызывается window.

. Или передайте анонимную функцию, которая вызывает его для элемента:

setTimeout(function() {
    elt.click();
}, 6000);

Или вы можетепривязать метод к элементу:

setTimeout(elt.click.bind(elt), 6000);
...