J'essaie d'automatiser certaines choses sur un site Web mais j'ai ce problème où mon javascript ne s'exécute pas après l'ouverture de la page.
le code est très simple:
html:
var win = window.open("https://www.google.ca/", "_top"); win.onload = function(){ console.log("test"); }
javascript:
var win = window.open("https://www.google.ca/", "_top"); console.log("test");
Lorsque vous appuyez sur f12 (sur chrome), vous pouvez voir que dans la console, le " test "n'est pas journalisé, mais si vous supprimez la fonction window.open
, il est journalisé. Aucun autre code n'est exécuté après window.open ("")
, j'aimerais savoir comment je peux le faire. J'ai aussi essayé ceci dans le code javascript, mais sans succès:
<!DOCTYPE html> <html> <head> </head> <body> <script src="script.js"></script> </body> </html>
3 Réponses :
Cela ne peut pas fonctionner: en utilisant window.open
avec le deuxième argument défini sur _top
, vous demandez au navigateur d'ouvrir une autre page dans la même fenêtre qui est actuellement utilisé pour exécuter votre script. Et lorsque vous quittez le script actuel, son exécution est arrêtée
comment pourrais-je exécuter le script sur la page Web que je veux alors?
Dans votre code, ce n'est pas possible car, en utilisant _top
, vous quittez la page d'origine, donc l'exécution du code s'arrête immédiatement.
Bien que vous puissiez utiliser un délai setTimeout
pour obtenir le résultat souhaité.
<button onclick="openWindow();">Click here to Window</button>
console.log("Before Popup"); function openWindow(){ setTimeout(function(){ window.open("https://www.google.ca/", "_top"); }, 100); //delay of 100ms console.log("Window Opened"); }
Pouvez-vous expliquer ce que fait cet appel setTimeout
, de sorte que l'OP puisse apprendre de votre réponse?
Fondamentalement, le navigateur perd le focus lorsque vous faites window.open
c'est pourquoi le code n'est pas exécuté car l'exécution est arrêtée. Enveloppez la fonction dans setTimeout
pour l'exécuter même lorsque le navigateur n'est pas en focus. Votre code devient
var win = window.open("https://www.google.ca/", "_top"); setTimeout(() => console.log("test"));
Eh bien, la réponse la plus évidente est simplement d'exécuter votre code AVANT d'exécuter
window.open
.il doit être exécuté après window.open