7

各位大佬,我这段代码连不上metamask有什么不对的地方吗? | 登链社区 | 技术问答

 2 years ago
source link: https://learnblockchain.cn/question/2609
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
各位大佬,我这段代码连不上metamask有什么不对的地方吗? | 登链社区 | 技术问答

20 各位大佬,我这段代码连不上metamask有什么不对的地方吗?

网上找了一段代码准备试着运行一下,但是在本地搭建访问之后metamask没有弹出来。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
</head>
<body>
</body>
<script>
    // 获取web3实例
    if (typeof web3 !== 'undefined') {
        web3 = new Web3(web3.currentProvider);
    } else {
        web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
    }
    // 检验链接否成功
    if(!web3.isConnected()) {
        console.log("连接失败!!")
    } else {
        console.log("连接成功!!")
        // 获取账号列表
        var accounts = web3.eth.accounts;
        console.log(accounts)
        // 设置默认账号
        web3.eth.defaultAccount = accounts[0];
        // 获取账号余额
        var balance = web3.eth.getBalance(accounts[0]);
        console.log(balance.toString())
        //单位转换
        var value = web3.fromWei(balance,"ether");
        console.log(value.toString())
        // 判断地址是否正确
        var isAddress = web3.isAddress(accounts[1]);
        console.log(isAddress);
        //发送交易
        web3.eth.sendTransaction({
            from : accounts[0],
            to : accounts[1],
            value: web3.toWei(1,"ether")
        }, function(err, transactionHash) {
            if (!err){
                console.log(transactionHash)
            }else{
                console.log(err)
            }
        });
        //获取交易信息
        var transaction = web3.eth.getTransaction('0x5455fe5ac45a95bdf608573ee1f082c2f48b3539cdec0ed8d18a8201d876a30c');
        console.log(transaction);
        // 智能合约交互
        var contractAddress="0xba8c13eb6ebe2da349dd3786d10a85e75e5122a7";
        var contractABI = [
            {
                "constant": true,
                "inputs": [],
                "name": "getMsg",
                "outputs": [
                    {
                        "name": "",
                        "type": "string"
                    }
                ],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [],
                "name": "str",
                "outputs": [
                    {
                        "name": "",
                        "type": "string"
                    }
                ],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    {
                        "name": "_str",
                        "type": "string"
                    }
                ],
                "name": "setMsg",
                "outputs": [
                    {
                        "name": "",
                        "type": "bool"
                    }
                ],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            }
        ];
        // 获取合约实例
        var contract = web3.eth.contract(contractABI).at(contractAddress);
        //调用合约方法
        var result = contract.getMsg();
        console.log(result)
        var result1 = contract.setMsg("update message");
        console.log(result1)
    }
</script>
</html>

最佳答案 17小时前

需要先进行授权

if (window.ethereum) {
      App.web3Provider = window.ethereum;
      try {
        // Request account access
        await window.ethereum.enable();
      } catch (error) {
        // User denied account access...
        console.error("User denied account access")
      }
    }

可以看看这里

Tiny熊 - 布道者
擅长:智能合约,以太坊 | 采纳率 39% | 回答于 23小时前

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK