-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
120 lines (110 loc) · 4.14 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MetaMask Network Manager</title>
</head>
<body>
<h1>MetaMask Network Manager</h1>
<p id="beraContainer">
BERA 熊链
<button class="addNetworkButton">Add Berachain Artio Network</button>
<button class="switchNetworkButton">Switch to Berachain Artio Network</button>
</p>
<p id="holeskyContainer">
Taiko Holesky
<button class="addNetworkButton">Add Holesky Network</button>
<button class="switchNetworkButton">Switch to Holesky Network</button>
</p>
<p id="taikoL2Container">
Taiko L2
<button class="addNetworkButton">Add Taiko L2 Network</button>
<button class="switchNetworkButton">Switch to Taiko L2 Network</button>
</p>
<script>
const networks = [
document.getElementById('beraContainer'),
document.getElementById('holeskyContainer'),
document.getElementById('taikoL2Container')
];
const addBeraNetworkButton = document.getElementById('addBeraNetworkButton');
const switchBeraNetworkButton = document.getElementById('switchBeraNetworkButton');
const chainDataArray = [
{
chainId: '0x138D5', // 80085 in hexadecimal
chainName: 'Berachain Artio',
nativeCurrency: {
name: 'BERA',
symbol: 'BERA', // 2-6 characters long
decimals: 18
},
rpcUrls: ['https://artio.rpc.berachain.com/'],
blockExplorerUrls: ['https://artio.beratrail.io/']
},
{
chainId: '0x4268', // 80085 in hexadecimal
chainName: 'Holesky',
nativeCurrency: {
name: 'ETH',
symbol: 'ETH', // 2-6 characters long
decimals: 18
},
rpcUrls: ['https://ethereum-holesky.publicnode.com'],
blockExplorerUrls: ['https://holesky.beaconcha.in']
},
{
chainId: '0x28c60', // 80085 in hexadecimal
chainName: 'Taiko Katla L2',
nativeCurrency: {
name: 'ETH',
symbol: 'ETH', // 2-6 characters long
decimals: 18
},
rpcUrls: ['https://taiko-katla.blockpi.network/v1/rpc/public'],
blockExplorerUrls: ['https://explorer.katla.taiko.xyz']
}
];
for (let i = 0; i < networks.length; i++) {
const index = i;
const container = networks[i];
const addNetworkButton = container.getElementsByClassName('addNetworkButton')[0];
const switchNetworkButton = container.getElementsByClassName('switchNetworkButton')[0];
const chainData = chainDataArray[index];
addNetworkButton.addEventListener('click', async () => {
if (window.ethereum) {
try {
await window.ethereum.request({
method: 'wallet_addEthereumChain',
params: [chainData]
});
} catch (addError) {
console.error('Error adding network:', addError);
}
} else {
alert('MetaMask is not installed. Please install it to use this feature.');
}
});
switchNetworkButton.addEventListener('click', async () => {
if (window.ethereum) {
try {
await window.ethereum.request({
method: 'wallet_switchEthereumChain',
params: [{chainId: chainData.chainId}]
});
} catch (switchError) {
if (switchError.code === 4902) {
alert('The network is not added to MetaMask. Please add it first.');
} else {
console.error('Error switching network:', switchError);
}
}
} else {
alert('MetaMask is not installed. Please install it to use this feature.');
}
});
}
</script>
</body>
</html>