#javascript
#javascript
Вопрос:
У меня возникают проблемы с открытием нескольких окон в правильном порядке, независимо от того, что я пытаюсь, он открывает все окна одновременно, что может составлять сотни серверов. Я пытаюсь открыть одно окно, что-то сделать, закрыть окно, повторять, пока все не откроются.
var mission = document.querySelectorAll('a[href*="/missions"]');
var i;
document.getElementById("sharebtnalliance").onclick = function shareMission(){
for(i = 0; i < mission.length; i ){
window.open(mission[i], "", "height: 80%; width: 80%;");
setTimeout(function() {
window.close();
}, 5000);
}
}
Задержка, похоже, не наступает, 5 секунд будет достаточно, чтобы сделать то, что нужно сделать, прежде чем открывать следующий URL, но она также не закрывает их — может быть, потому, что браузер изо всех сил пытается справиться с таким количеством открывающихся страниц.
Ответ №1:
Я лично не стал бы использовать тайм-аут, вам, вероятно, следует дождаться закрытия окна с помощью чего-то вроде этого: N.B. Это будет работать только в том случае, если URL-адреса находятся в одном домене.
ПРЕДОСТЕРЕЖЕНИЕ: ЭТО НЕ БЫЛО ПРОТЕСТИРОВАНО И МОЖЕТ ПОТРЕБОВАТЬ НЕКОТОРОЙ ОТЛАДКИ
var mission = document.querySelectorAll('a[href*="/missions"]');
document.getElementById("sharebtnalliance").onclick = async function shareMission(){
for(let i = 0; i < mission.length; i ){
await openWindowAsync(mission[i]);
}
}
function openWindowAsync(url){
return new Promise(resolve => {
const w = window.open(url, "", "height: 80%; width: 80%;");
w.addEventListener('close', resolve);
});
}
Комментарии:
1. Спасибо — все URL-адреса находятся в одном домене. Я проверю это сейчас.
2. Я получаю неожиданный токен на
await openWindow(mission[i]);
3. Проверьте имя функции, в моем примере это неправильно — ИСПРАВЛЕНО
4. Даже после вашего редактирования (я также пробовал это) я получаю ту же ошибку
5. В каком браузере (и версии) вы пытаетесь это сделать?