La magie d'un click?

Plouf387 -  
jordane45 Messages postés 40050 Statut Modérateur -
Bonjour,

J'essaie de créer un bouton pour obtenir l'adresse d'un utilisateur Metamask (petit projet Web3).

La fonction web3.currentProvider.selectedAddress est issue de la library web3. Elle permet d'obtenir cette fameuse adresse.

Est-ce que quelqu'un saurait m'expliquer pourquoi la fonction que je nomme "DonneAdresse" ne marche pas de la même façon dans les deux cas:

Premier cas:

var Web3 = require('web3');
var web3 = new Web3(Web3.givenProvider || 'ws://some.local-or-remote.node:8545');
var donating_address = '';

function DonneAdresse(){
  let address = web3.currentProvider.selectedAddress;
  console.log(address)
}



Alors, j'obtiens "undefined" dans la console.

Deuxième cas où "conbut" est l'ID d'un bouton:

var Web3 = require('web3');
var web3 = new Web3(Web3.givenProvider || 'ws://some.local-or-remote.node:8545');
var donating_address = '';

function DonneAdresse(){
  let address = web3.currentProvider.selectedAddress;
  console.log(address)
}
document.querySelector('#conbut').addEventListener('click', DonneAdresse);


Alors j'obtiens bien l'adresse de l'utilisateur dans la console quand je clique sur le bouton "conbut".

Comme si le passage par un bouton faisait quelque chose de différent...
A voir également:

2 réponses

jordane45 Messages postés 40050 Statut Modérateur 4 754
 
Bonjour

As tu bien mis ton js à la fin de ta page ?
Pour qu'il ait bien eu le temps d'attendre que toutes les données de la page soit chargées...
0
Plouf387
 
Merci Jordane!

Qu'entends tu par mettre le js à la fin de ma page? Tu veux dire que le code soit appelé à la fin de la page html?
0
jordane45 Messages postés 40050 Statut Modérateur 4 754
 
Oui
Avant le </body>
0
Plouf387 > jordane45 Messages postés 40050 Statut Modérateur
 
Merci pour le conseil, mais non, ce n'est pas ça. J'ai toujours une différence entre les deux.

Dans le premier cas, la ligne: "let address = web3.currentProvider.selectedAddress"
ne s'execute pas quand la fonction DonneAdresse est appelée par la commande DonneAdresse(). J'obtiens address = undefined.

Par contre, dans le deuxième cas, c'est à dire quand je passe par le clic d'un bouton, la ligne: "let address = web3.currentProvider.selectedAddress" s'execute bien, et me renvoie une adresse effective, bien définie.
0
jordane45 Messages postés 40050 Statut Modérateur 4 754 > Plouf387
 
Il faudrait nous montrer ton code complet
0