У меня есть код JavaScript, который я пытаюсь запустить из Dev Tools, которые неисправны. Я хочу, чтобы она открыла новую вкладку с конкретным (не перекрестным) местоположением, чтобы ввести немного JavaScript в эту новую страницу и позволить ей запускать. Все эти части работают отдельно, если я вставлю их в консоль индивидуально, но, похоже, это из -за того, насколько медленно я вставляю их в консоль. Когда они помещают в петлю, новый окно -объект из window.open () не существует или находится в каком -то ненициализированном состоянии. Слушатель событий не работает, потому что, насколько мне известно, если это ненициализировано, я не могу получить доступ к нему. AddeventListener () метод. Рассматриваемый код: < /p>
Код: Выделить всё
let xpath = document.evaluate("//div[@class='allissues_gallerycell']/center/a[1]/@href", document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
let node;
while (node = xpath.iterateNext()) {
let direct_link = node.value.replace(/&.+/,'&printsec=frontcover&source=gbs_ge_summary_r&cad=0');
let tab = window.open(direct_link);
window.addEventListener("message", function(e){
tab.close();
}, { once: true });
tab.addEventListener("load", () => {
let s = tab.document.createElement('script');
s.onload = () => {
tab.window.x();
};
s.src = 'https://cdn.gisthostfor.me/NoMoreNicksLeft-8EKesXvhym-gb_magazines.js';
tab.document.body.appendChild(s);
});
}
Запуск этого кода дает Uncaught TypeError: невозможно прочитать свойства null (чтение 'addEventListener') , и я вижу страшные Red Squiggles подчеркивающие вкладки. AddeventListener () . При вручении задержки с человеческим временем, вставленной вручную каждую линию, это, кажется, работает так, как предполагалось. Есть ли другой вид слушателя событий, в котором я могу обернуть это, чтобы я мог настроить нагрузку? Какое заблуждение я страдаю?
Подробнее здесь:
https://stackoverflow.com/questions/796 ... mmediately