Я немного новичок в javascript, и мне нужна помощь.
Моя цель - создать программу javascript на стороне клиента, которая использует Metamask в качестве поставщика web3 и отображает вывод некоторых функций web3 на экране.
Я нашел фрагмент кода, который должен получить провайдера web3 из MetaMask здесь или написать предупреждающее сообщение в консоль разработчика.
Я безуспешно пытался запустить его, открыв в браузере файл со следующими строками кода:
<html>
<body>
<script type="text/javascript">
window.addEventListener('load', function() {
// Checking if Web3 has been injected by the browser (Mist/MetaMask)
if (typeof web3 !== 'undefined') {
// Use Mist/MetaMask's provider
web3js = new Web3(web3.currentProvider);
console.log('Got a web3 provider');
} else {
console.log('No web3')
}
})
</script>
</body>
</html>
Это пишет в консоль "Нет web3". Я определенно вошел в систему MetaMask, которая показывает мой баланс в основной сети.
Вопрос: Почему это не работает и как мне заставить его работать?
Что делает метамаска, так это вставляет javascript в документ при доступе к нему. Браузер выполнит этот javascript, и именно это выполнение определит переменную de web3.
Но когда вы получаете доступ к документу, обращаясь к файлу (ваш URL-адрес будет начинаться с файла://), тогда метамаска не будет вводить javascript, поэтому переменная web3 будет неопределенной.
Попробуйте получить доступ к вашему файлу через какой-либо веб-сервер, и он будет работать.
РейХейнс
typeof window.web3 !== 'undefined'