如何监听 Metamask 的 web3 的合约“确认”/“取消”事件?

Posted

技术标签:

【中文标题】如何监听 Metamask 的 web3 的合约“确认”/“取消”事件?【英文标题】:How to listen to Metamask's web3's "confirm"/"cancel" event of a contract? 【发布时间】:2019-03-01 20:54:50 【问题描述】:

由于 metamask 注入的 web3 跟随 https://github.com/ethereum/wiki/wiki/javascript-API

但是在调用contract.new()时似乎没有编码来捕捉确认/取消按钮的点击事件(如下图)

有没有办法捕捉事件?谢谢。

【问题讨论】:

【参考方案1】:

要处理用户对合约函数的确认/取消响应,您可以使用发送函数中的 transactionHash 事件和 error 事件。

“transactionHash”返回transactionHash:String:当交易哈希可用时触发。

"error" 返回错误: 错误:如果在发送过程中发生错误则触发。如果交易被网络拒绝并带有收据,则收据将作为错误对象的属性提供。

You can see detail here.

当您点击确认按钮时,您可以在 transactionHash 事件中处理这种情况。

当您点击Cancel按钮时,您可以在error事件中处理这种情况。

【讨论】:

【参考方案2】:

自己找到答案

如果用户单击“取消”按钮,则下面的“processedContract”变量将未定义。 如果得到确认,它将是合约,如果它有一个地址(processedContract.address),那么它正在被挖掘。

newContract.new(..., function(e, processedContract) ...);

【讨论】:

以上是关于如何监听 Metamask 的 web3 的合约“确认”/“取消”事件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 MetaMask 与 Web3.js 版本 1.2.6 连接?

如何使用 Web3.js 将 Metamask 连接到 Angular App?

MetaMask与Web3中智能合约调用

如何使用 web3.js 注销 MetaMask 帐户

ETH开发DAPP使用Web3+Vue唤醒MetaMask钱包和合约交互

未捕获的错误:无效地址 web3.currentProvider MetaMask