Fonctions et variables en Javascript
Résolu
Kap_
Messages postés
12
Statut
Membre
-
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
- A javascript error occurred in the main process - Forum Windows
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é)
let dld = document.getElementById('Button'); var adress; dld.onclick = function(element){ while (adress === undefined) { chrome.tabs.query({ 'active': true, 'currentWindow': true }, function (tabs) { adress = tabs[0].url; } ); } alert(adress); chrome.tabs.create( { 'url': 'https://google.com', 'pinned':true, 'active':false }, /*function(tab){ alert("tab created"); }*/ ); };En tout cas merci de m'aider
function (tabs) { adress = tabs[0].url; alert(adress); }Si rien ne s'affiche, c'est que chrome.tabs.query ne retourne pas, vérifiez alors la consoleVoici où j'en suis dans mon programme :
let dld = document.getElementById('Button'); var address; dld.onclick = function(element){ chrome.tabs.query( { 'active': true, 'currentWindow': true }, function (tabs) { address = tabs[0].url; alert(address); } ); chrome.tabs.create( { 'url': 'https://google.com', 'pinned':true, 'active':false }, /*function(tab){ alert("tab created"); }*/ ); };chrome.tabs.query( { 'active': true, 'currentWindow': true }, faireQQchose); var faireQQchose = function(tabs) { // Dès que chrome.tabs.query a exécuté, c'est fonction est appelée address = tabs[0].url; alert(address); // placez-y ce que vous voulez ; le script au complet si ça vous plaît