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

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

MetaMask のネットワーク変更を検知するプログラム例
この例では web3.js 0.20.6 を使用

example.js
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; } } } };


参考

関連