Хорошо, вот оно: возможно, вам следует подождать, пока документ загрузится, похоже, вы можете сделать это с помощью DOMContentLoaded evenListener, а затем в обратном вызове onready вы можете выполнить функцию щелчка: см. Пример ниже
DOM не изменился в ES6, ES6 предоставляет новые функции JavaScript, вот и все.В чистом js-событии для загруженного dom существует документ, готовый из jquery-эквивалента
document.addEventListener("DOMContentLoaded",function(){ //do something here });
Модули, работающие с деревом DOM, могут иметь прослушиватель внутри или должны использоваться после готовности dom.Я создал пример функции DOM, чтобы показать, что я имею в виду:
var DOM=function(selector){
document.addEventListener("DOMContentLoaded",()=>{
this.element=document.querySelector(selector);
if (typeof this.callback === 'function')
this.callback();
});
};
//HERE WE HAVE CALLBACK WHEN OUR MODULE CAN BE USED
DOM.prototype.onReady=function(callback){
this.callback=callback;
};
DOM.prototype.getElement=function(){
//example object method
return this.element;
};
DOM.prototype.click=function(){
return this.element.click
};
Пример использования:
document.querySelector(".glyphsSpriteSafari__outline__24__grey_9").click();
var d=new DOM("div._9AhH0");
firstPicture.onReady(()=>{
firstPicture.click();
});
//your other code
Модули должны быть независимыми от DOM, поэтому создание модулей, которые экспортируют элементы DOM напрямую, является очень неправильной практикой.,Таким образом, это может быть сделано двумя способами:
Модули должны получать селекторные объекты DOM в атрибутах и должны вызываться после того, как DOM будет готов.Таким образом, ваш модуль не знает, где он вызывается, но ему нужна готовая структура DOM.В этой ситуации обратный вызов DOM ready находится только в главном файле, который использует модули и вызывает их.
Модули могут иметь несколько прослушивателей, готовых к DOM, но также нам нужна некоторая информация, когда можно использовать модуль (эту ситуацию я показал в примереи функция onReady).