Не удалось обнаружить MetaMask в браузере

Я немного новичок в 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, которая показывает мой баланс в основной сети.

Вопрос: Почему это не работает и как мне заставить его работать?

Вы тестировали использование окна в качестве области действия для web3?typeof window.web3 !== 'undefined'

Ответы (1)

Что делает метамаска, так это вставляет javascript в документ при доступе к нему. Браузер выполнит этот javascript, и именно это выполнение определит переменную de web3.

Но когда вы получаете доступ к документу, обращаясь к файлу (ваш URL-адрес будет начинаться с файла://), тогда метамаска не будет вводить javascript, поэтому переменная web3 будет неопределенной.

Попробуйте получить доступ к вашему файлу через какой-либо веб-сервер, и он будет работать.

Да, это неудобно для разработки локальных скриптов и страниц.