Fonctions et variables en Javascript
Résolu
Kap_
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, je suis en ce moment en train d'essayer de créer une extension pour chrome, sauf que dans le programme en javascript de mon popup, je me rends compte qu'une partie est lue dans le mauvais sens. Je m'explique avec le programme :
Ici la partie
let dld = document.getElementById('Button');
var adress;
dld.onclick = function(element){
chrome.tabs.query({
'active': true,
'currentWindow': true
},
function (tabs) {
var adress = tabs[0].url;
alert(adress);
}
);
alert(adress);
chrome.tabs.create(
{ 'url': 'https://google.com',
'pinned':true,
'active':false
},
/*function(tab){
alert("tab created");
}*/
);
};
Ici la partie
alert(adress);est lue avant le
chrome.tabs.queryalors que ce devrai être l'inverse. Résultat il n'arrive pas à récupérer l'URL du site sur lequel je suis, ce qui me sera important par la suite. Quelqu’un pourrait-il m'aider à résoudre ce problème ?
A voir également:
- Fonctions et variables en Javascript
- Fonction si et - Guide
- Telecharger javascript - Télécharger - Langages
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
- Afficher un tableau javascript en html ✓ - Forum Javascript
2 réponses
C'est normal, function (tabs) est le callback, il sera exécuté dès lors que chrome.tabs.query aura retourné (on dit de cetter dernière qu'elle est asynchrone). Pendant ce temps, JavaScript ne reste pas les bras croisés et passe au 2d alert(adress);, lui qui d'ailleurs vaudra toujours undefined ; il faut comprendre que var adress; que tu déclares au tout début et var adress = tabs[0].url; sont 2 variables complètement différentes, la 1re est globale, la 2de est propre à function (tabs) (on parle de portée locale). Si tu veux plutôt modifier la valeur de la variable globale pour qu'elle s'affiche dans le 2d alert, tu dois simplement lui assigner la nouvelle valeur :
adress = tabs[0].url; // pas de var ; on modifie la variable adress déjà existante
Bonjour,
tu parles du quel
vu que tu en a deux dans ton code ?
PS: A l'avenir, merci d'utiliser correctement les balises de code en y précisant le langage afin que l'on ait la coloration syntaxique, l'indentation et les numéros de lignes.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.
tu parles du quel
alert(adress);
vu que tu en a deux dans ton code ?
PS: A l'avenir, merci d'utiliser correctement les balises de code en y précisant le langage afin que l'on ait la coloration syntaxique, l'indentation et les numéros de lignes.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.
Je n'ai pas vérifié, mais je pense que les fonctions sont asynchrones.
Il faut donc placer les codes qui doivent s'enchainer de façon plus imbriquer ou utiliser les méthodes (si elles existent) pour s'assurer que la fonction est terminée avant de passer à la suivante.
Tout doit être indiqué dans la doc officielle (que je t'avais déjà donné)
Il faut donc placer les codes qui doivent s'enchainer de façon plus imbriquer ou utiliser les méthodes (si elles existent) pour s'assurer que la fonction est terminée avant de passer à la suivante.
Tout doit être indiqué dans la doc officielle (que je t'avais déjà donné)
En tout cas merci de m'aider
Si rien ne s'affiche, c'est que chrome.tabs.query ne retourne pas, vérifiez alors la console
Voici où j'en suis dans mon programme :