问题描述
我一直在尝试使用 web3 将元掩码注入我的网站。我在我的网站中调用了 web3,如下所示,并使用本地服务器启动了该网站(VS Code 扩展,它给了我端口:5500)
window.addEventListener('load',async () => {
if (window.ethereum) {
window.web3 = new Web3(ethereum);
try {
await ethereum.enable();
initPayButton()
} catch (err) {
$('#status').html('User denied account access',err)
}
} else if (window.web3) {
window.web3 = new Web3(web3.currentProvider)
initPayButton()
} else {
$('#status').html('No Metamask (or other Web3 Provider) installed')
}
})
后来我按如下方式调用我的合同,但我遇到了麻烦。
pay() 是在我的 HTML 中单击按钮时发生的函数。它需要从我的智能合约中调用 payout() 函数,所以最初我定义了它,你可以在下面的第一行看到。
window.contract = new window.web3.eth.Contract(
[ abi ],'0xC4AfE8504a711bE2D5E25b45eb72fC3f0924aB21');
function pay() {
var paymentAddress = document.getElementById("address").value;
var val = document.getElementById("weight").value;
var type= document.getElementById("category").value;
contract.methods.payout.sendTransaction( paymentAddress,val,type )
//updateStatus('Updated.');
}
我收到以下错误
MetaMask no longer injects web3
Uncaught TypeError: window.web3.eth is undefined
我尝试了很多方法,但无法更进一步,请帮助我。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)