直接上代码,我这里吧所有配置都改成正式的链56,一旦用户的小狐狸钱包现在的链不一致,就询问切换网络,没有就创建网络,网络切换成功后,收到监听,重新连接一下web3,就是重新调用一些connectWeb3这个方法,再连接合约

  connectWeb3: async function () {
// 判断链对不,链不对就请求切换网络,或者添加网络,if (window.ethereum) {try {await (window.ethereum as any).request({method: 'wallet_switchEthereumChain',params: [{chainId: Web3.utils.numberToHex(56) // 目标链ID}]})} catch (e) {if ((e as any).code === 4902) {try {await (window.ethereum as any).request({method: 'wallet_addEthereumChain',params: [{chainId: Web3.utils.numberToHex(56), // 目标链IDchainName: 'Binance Smart Chain Mainnet',nativeCurrency: {name: 'bnb',symbol: 'bnb',decimals: 18},rpcUrls: ['https://bsc-dataseed.binance.org'], // 节点blockExplorerUrls: ['https://www.bscscan.com']}]})} catch (ee) {//}} else if ((e as any).code === 4001) return}}// 监听账户变化const func: Function = async function (accounts) {_this.account = accounts[0];if (_this.isConnect) {console.log("Contract Account Changed");_this.init();// 清空数据_this.connectWeb3();// 链变化,然后重新调用此方法,连接web3}};let web3Provider: any = null;if (window.ethereum) {(window.ethereum as any).autoRefreshOnNetworkChange = false;(window.ethereum as any).on("accountsChanged", func);// 监听链id变化(window.ethereum as any).on("chainChanged", (chainId1) => {console.log("Chain Changed");_this.chainId = chainId1;func([_this.account]);});web3Provider = window.ethereum;try {await (window.ethereum as any).enable();} catch (error) {console.error("User denied account access");}} else if (window.web3) {web3Provider = window.web3.currentProvider;} else {web3Provider = new                 Web3.providers.HttpProvider(ChainLink[TargetChainId.toString()]);// 连接rpc网络}_this.web3 = new Web3(web3Provider);_this.web3.eth.getAccounts(function (error, result) {if (!error) console.log(result);});_this.isConnect = true;_this.account = (window.ethereum as any).selectedAddress || null;_this.chainId = (window.ethereum as any).networkVersion || null;if(_this.chainId!=TargetChainId) return;// 链不对,就不去连接合约了if (_this.account) {const time = Math.round(new Date().valueOf() / 1000);// 签名_this.web3.eth.personal.sign("Sign this message to login Game." + time, _this.account).then((res) => {_this.signature = res + "|" + time;});_this.connectContract();// 连接合约}return _this.account;
}

js连接web3,连接小狐狸metamask钱包,实现链不对后切换网络和创建网络相关推荐

  1. JS脚本调起小狐狸MetaMask浏览器扩展插件解锁

    JS脚本调起小狐狸MetaMask浏览器扩展插件解锁 直接F12在控制台运行js脚本,适用比如Selenium.Playwright.Puppeteer等自动化框架解锁钱包 好用的话,记得点个赞夸夸我 ...

  2. 前端Vue项目调用页面web3.js:连接metaMask钱包,(查询钱包ETH余额,查询代币余额,ETH转账,代币转账,代币授权,查询授权数量,计算价格)等功能

    这里分享下相关文档 1.web3.js中文文档 https://learnblockchain.cn/docs/web3.js/getting-started.html 2.metamask官方文档: ...

  3. 使用 Web3.js 连接以太坊节点并查询区块链数据

    Web3.js 是一个用于连接以太坊网络的 JavaScript 库.在本文中,我们将介绍如何使用 Web3.js 来连接以太坊节点,并且查询以太坊区块链上的数据. 1. 安装 Web3.js 首先, ...

  4. 【一步步一起学DApp开发】(四)web3.js 基本使用 | 连接geth | 创建web客户端

    概述 web3.js内部使用JSONRPC与geth通信.它把所有JSON-RPC API当作JavaScript API,也就是说,它不仅支持所有与以太坊相关的API,还支持与Whisper和Swa ...

  5. 前端VUE使用web3调用小狐狸(metamask)和合约(ERC20)交互

    1.创建vue项目 2.安装web3 npm install web3 3.项目web3 main.js import Vue from 'vue' import App from './App.vu ...

  6. 【Web3】Web3连接到以太坊网络(测试网、主网)

    目录 什么是Web3 Web3项目连接以太坊网络 1.下载Web3 2.实例化Web3对象 3.infura 获取连接以太坊网络节点 4.添加网络节点 什么是Web3 web3.js开发文档:web3 ...

  7. MySQL会回收使用中的连接吗_Node.js实现mysql连接池使用事务自动回收连接的方法示例...

    本文实例讲述了Node.js实现mysql连接池使用事务自动回收连接的方法.分享给大家供大家参考,具体如下: var mysql = require('mysql'), Connection = re ...

  8. paip.最好的脚本语言node js 环境搭建连接mysql

    paip.最好的脚本语言node js 环境搭建连接mysql #====下载node...走十一个exe..容易的.. 1 #0----Hello world   .js 2 #---------模 ...

  9. node mysql 连接池创建_Node.js使用MySQL连接池的方法实例

    本文实例讲述了Node.js使用MysqL连接池的方法.分享给大家供大家参考,具体如下: Nodejs如何使用MysqL Nodejs要连接MysqL,可以使用Nodejs的MysqL驱动来实现.比如 ...

最新文章

  1. 阿里限流工具 Sentinel
  2. 系统集成项目管理之项目采购管理
  3. 孙正义太难了:去年亏125亿美元,15家投资公司要破产,二期愿景基金不得不暂停...
  4. Linux tomcat日志分割按天分割
  5. 【LeetCode从零单排】No 191.Number of 1 Bits(考察位运算)
  6. boost::detail::atomic_count相关的测试程序
  7. 带你自学Python系列(十二):Python函数的用法(二)
  8. 投票选择eclipse.org的新界面
  9. 根据大小分割大文本_值得一看的文本检测方法
  10. tcpdump如何判断丢包_亿级规模的高可用微服务系统,如何轻松设计?
  11. 显卡型号区分 N卡和A卡   N卡与A卡的区别
  12. 祝贺泰山JDK8开源
  13. 官方原版Windows XP SP3(VOL)简体中文版ISO下载
  14. 格局炸裂,程序员必看的十部纪录片
  15. SMT贴片相关知识梳理
  16. 电脑开热点手机无法连接,显示无ip分配的问题
  17. WPS新建文字分享微信.docx形式_这 3 个实用的文档「分享」技巧,很多人都不会用...
  18. Linux Intel 无线网卡Wifi+蓝牙
  19. 如何升级IE浏览器 电脑IE浏览器怎么升级
  20. 2021-2027全球与中国β-雌二醇 (CAS 50-28-2)市场现状及未来发展趋势

热门文章

  1. google vr 入门之制作简易的VR播放器(二)
  2. (荷兰)彼得·冯·门施:博物馆学的研究对象
  3. 洛谷 [P3338] 力
  4. Yii2搭建后台并实现rbac权限控制完整实例教程
  5. LeetCode:187.重复的DNA序列解析
  6. linux环境 itext 合并pdf
  7. BAT文件语法和技巧(bat文件的编写及使用
  8. 九州云深耕OpenStack三大试点项目
  9. 小米mix2安兔兔html5跑分,小米MIX 2S跑分多少?高通骁龙845安兔兔跑分实测
  10. 第三代api自动化测试框架使用教程(pytest+allure+sql+yaml)