要在JavaScript中调用MetaMask并与其进行交互,通常

      时间:2025-09-23 09:39:40

      主页 > 最新资讯 >

        要在JavaScript中调用MetaMask并与其进行交互,通常可以使用`window.ethereum`对象,这是MetaMask注入到网页中的,以便与以太坊区块链进行通信。以下是一个基本的指南以及示例代码,说明如何在JavaScript中调用MetaMask。

### 示例代码

在开始之前,请确保您的用户已经安装了MetaMask,并在浏览器中启用了它。

#### 1. 检查MetaMask是否已安装

```javascript
if (typeof window.ethereum !== 'undefined') {
    console.log('MetaMask is installed!');
} else {
    console.log('Please install MetaMask!');
}
```

#### 2. 请求用户连接钱包

要与MetaMask交互,您需要请求用户连接钱包,并获取他们的以太坊地址。

```javascript
async function connectWallet() {
    if (typeof window.ethereum !== 'undefined') {
        try {
            // 请求用户连接其钱包
            const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' });
            // 账户地址
            const userAddress = accounts[0];
            console.log('Connected Account:', userAddress);
            return userAddress;
        } catch (error) {
            console.error('User denied account access', error);
        }
    } else {
        console.log('Please install MetaMask!');
    }
}
```

#### 3. 获取账户余额

您可以使用以下方法来获取以太坊账户的余额。

```javascript
async function getBalance(address) {
    const balance = await window.ethereum.request({
        method: 'eth_getBalance',
        params: [address, 'latest'],
    });
    // 将余额从wei转换为ether
    return window.web3.utils.fromWei(balance, 'ether');
}
```

#### 4. 发送交易

您可以使用`eth_sendTransaction`方法发送以太币交易。

```javascript
async function sendTransaction(fromAddress, toAddress, amount) {
    const transactionParameters = {
        to: toAddress, // 交易目标
        from: fromAddress, // 发送方账户
        value: window.web3.utils.toHex(window.web3.utils.toWei(amount.toString(), 'ether')), // 计算wei值
    };

    try {
        const txHash = await window.ethereum.request({
            method: 'eth_sendTransaction',
            params: [transactionParameters],
        });
        console.log('Transaction sent with hash:', txHash);
    } catch (error) {
        console.error('Transaction failed', error);
    }
}
```

### 使用场景

您可以将以上代码嵌入到一个简单的HTML页面中,用户打开网页后可以与MetaMask进行交互,例如连接钱包、获取以太余额、发送交易等。

### 完整实例



html lang=要在JavaScript中调用MetaMask并与其进行交互,通常可以使用`window.ethereum`对象,这是MetaMask注入到网页中的,以便与以太坊区块链进行通信。以下是一个基本的指南以及示例代码,说明如何在JavaScript中调用MetaMask。

### 示例代码

在开始之前,请确保您的用户已经安装了MetaMask,并在浏览器中启用了它。

#### 1. 检查MetaMask是否已安装

```javascript
if (typeof window.ethereum !== 'undefined') {
    console.log('MetaMask is installed!');
} else {
    console.log('Please install MetaMask!');
}
```

#### 2. 请求用户连接钱包

要与MetaMask交互,您需要请求用户连接钱包,并获取他们的以太坊地址。

```javascript
async function connectWallet() {
    if (typeof window.ethereum !== 'undefined') {
        try {
            // 请求用户连接其钱包
            const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' });
            // 账户地址
            const userAddress = accounts[0];
            console.log('Connected Account:', userAddress);
            return userAddress;
        } catch (error) {
            console.error('User denied account access', error);
        }
    } else {
        console.log('Please install MetaMask!');
    }
}
```

#### 3. 获取账户余额

您可以使用以下方法来获取以太坊账户的余额。

```javascript
async function getBalance(address) {
    const balance = await window.ethereum.request({
        method: 'eth_getBalance',
        params: [address, 'latest'],
    });
    // 将余额从wei转换为ether
    return window.web3.utils.fromWei(balance, 'ether');
}
```

#### 4. 发送交易

您可以使用`eth_sendTransaction`方法发送以太币交易。

```javascript
async function sendTransaction(fromAddress, toAddress, amount) {
    const transactionParameters = {
        to: toAddress, // 交易目标
        from: fromAddress, // 发送方账户
        value: window.web3.utils.toHex(window.web3.utils.toWei(amount.toString(), 'ether')), // 计算wei值
    };

    try {
        const txHash = await window.ethereum.request({
            method: 'eth_sendTransaction',
            params: [transactionParameters],
        });
        console.log('Transaction sent with hash:', txHash);
    } catch (error) {
        console.error('Transaction failed', error);
    }
}
```

### 使用场景

您可以将以上代码嵌入到一个简单的HTML页面中,用户打开网页后可以与MetaMask进行交互,例如连接钱包、获取以太余额、发送交易等。

### 完整实例



html lang=