JavaScript не выполняется после window.open ("") - PullRequest
1 голос
/ 27 июня 2019

Я пытаюсь автоматизировать некоторые вещи на веб-сайте, но у меня возникла проблема, когда мой 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.log("test");

Когда вы нажимаете f12 (в chrome), вы видите, что в консоли «тест» не регистрируется, но если вы удалите функцию window.open, он будет зарегистрирован. Никакой другой код не выполняется после window.open(""), я хотел бы знать, как я могу это сделать. Я также попробовал это в коде JavaScript, но безуспешно:

var win = window.open("https://www.google.ca/", "_top");
win.onload = function(){
    console.log("test");
}

Ответы [ 3 ]

3 голосов
/ 27 июня 2019

Это никак не может сработать: используя window.open со вторым аргументом, установленным на _top, вы просите браузер открыть другую страницу в том же окне, которое в данный момент используется для запуска вашего скрипта. И когда вы уходите от текущего скрипта, его выполнение останавливается

1 голос
/ 27 июня 2019

По сути, браузер теряет фокус, когда вы делаете window.open, поэтому код не выполняется, так как выполнение останавливается. Оберните функцию внутри setTimeout, чтобы запустить ее, даже если браузер не в фокусе. Ваш код становится

var win = window.open("https://www.google.ca/", "_top");
setTimeout(() => console.log("test"));
1 голос
/ 27 июня 2019

В вашем коде это невозможно, поскольку, используя _top, вы покидаете исходную страницу, поэтому выполнение кода немедленно останавливается.

Хотя вы можете использовать задержку setTimeout для достижения желаемого результата.

console.log("Before Popup");

function openWindow(){
    setTimeout(function(){ window.open("https://www.google.ca/", "_top"); }, 100); //delay of 100ms
    console.log("Window Opened");
}
<button onclick="openWindow();">Click here to Window</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...