LoginSignup
2
1

More than 5 years have passed since last update.

MetaMask のネットワーク変更を検知する

Last updated at Posted at 2018-06-14

MetaMask の仕様変更

  • MetaMask のネットワークを変更したときに、これまではブラウザを自動的にリロードしていたが、自動的にリロードしないようになるとのことです。
  • したがって、 ポーリングで MetaMask に設定されているネットワークを確認する必要が出てくるようになりました。
  • なお、どのネットワークが選択されているかについては、ローカルに値がキャッシュされているので、ポーリングしても通信は発生しないとのことです。

MetaMask のネットワーク変更を検知するプログラム例

  • この例では web3.js 0.20.6 を使用
var web3js; // ローカルの Web3 オブジェクトを格納するための変数です。
window.onload = function() {
  if (typeof web3 !== 'undefined') {
    // Mist または MetaMask のプロバイダを使用して Web3 を初期化します。
    web3js = new Web3(web3.currentProvider);
    console.log(web3js.version.api);  // => 0.20.3

    // ポーリングし、使用しているネットワークをチェックします。
    setInterval(function () {
      web3js.version.getNetwork(checkNetwork)
    }, 1000);

    function checkNetwork (err, currentNetwork) {
      if (window.lastNetwork != currentNetwork) {
        alert("Ethereum Network has been changed: " + currentNetwork);
        window.lastNetwork = currentNetwork;
      }
    }
  } 
};

サンプル

参考

Note

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1