我想通过web3.js在我的metamask插件中检索当前选择的帐户。而且我想动态地进行操作,因此当切换到另一个帐户时,应该将其打印到用户界面。
我通过以下方式导入库(测试版37):
<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js@1.0.0-beta.37/dist/web3.min.js"></script>"
使事情更复杂:
1)在勇敢的web3.eth.accounts[0]
中,我的当前地址会记录在我的dApp以外的任何其他站点中,但是在这里,它返回“ undefined”。
2)在Chrome(相同版本)中,它将始终返回undefined。
当在web3.js 0.x上构建的其他dApp使用完全相同的代码时,对我来说,它如何返回undefined
莫名其妙。
因此,我不能使用以下功能来动态打印当前地址:
var accountInterval = setInterval(function() {
if (web3.eth.accounts[0] !== userAccount) {
userAccount = web3.eth.accounts[0];
}
}, 100);
答案 0 :(得分:0)
在web3.js 1.x中,您必须使用getAccounts()异步方法,例如如下:
var accounts = await web3.eth.getAccounts();
var userAccount =accounts[0]
PS:其他Dapp中的web3.eth.accounts [0]显示您的帐户,因为它们仍在使用旧的web3.js版本,很可能是Metamask注入的版本