Я пытаюсь автоматизировать некоторые вещи на веб-сайте, но у меня есть проблема, когда мой javascript не выполняется после открытия страницы.
код очень простой:
HTML:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script src = "script.js"></script>
</body>
</html>
JavaScript:
var win = window.open("https://www.google.ca/", "_top");
console.info("test");
При нажатии f12 (на хроме) видно, что в консоли "тест" не логируется, но если убрать функцию window.open, то логируется. Никакой другой код не выполняется после window.open(""), я хотел бы знать, как я могу это сделать. Я также пробовал это в коде javascript, но безуспешно:
var win = window.open("https://www.google.ca/", "_top");
win.onload = function(){
console.info("test");
}
его нужно запускать после window.open



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это никак не может работать: используя window.open со вторым аргументом, установленным на _top, вы просите браузер открыть другую страницу в том же окне, которое в данный момент используется для запуска вашего скрипта. И когда вы уходите от текущего скрипта, его выполнение останавливается.
как я могу запустить скрипт на нужной мне веб-странице?
В вашем коде это невозможно, потому что, используя _top, вы покидаете исходную страницу, поэтому выполнение кода немедленно останавливается.
Хотя вы можете использовать задержку setTimeout для достижения желаемого результата.
console.info("Before Popup");
function openWindow(){
setTimeout(function(){ window.open("https://www.google.ca/", "_top"); }, 100); //delay of 100ms
console.info("Window Opened");
}<button onclick = "openWindow();">Click here to Window</button>Можете ли вы объяснить, что делает этот вызов setTimeout, чтобы ОП мог узнать из вашего ответа?
По сути, браузер теряет фокус, когда вы это делаете window.open, поэтому код не выполняется, так как выполнение останавливается. Оберните функцию внутри setTimeout, чтобы она работала, даже когда браузер не находится в фокусе. Ваш код становится
var win = window.open("https://www.google.ca/", "_top");
setTimeout(() => console.info("test"));
Что ж, самый очевидный ответ — просто запустите свой код ДО запуска
window.open.