以下代码示例在 macOS 上使用 Chrome (v78.0) 和 Firefox (v70.0) 中的 Metamask 插件进行了测试,并在交易被用户拒绝的情况下为您提供预期的错误消息:
createContract: function () {
let myContract = new web3.eth.Contract(ABI, CONTRACT_ADDRESS, {
from: account,
gasLimit: web3.utils.toHex(7900000),
gasPrice: web3.utils.toHex(1000000000)
});
myContract.methods.myMethodName().send().on("receipt", (receipt) => {
// Transaction succeeded
myContract.getPastEvents(
"myEventName", {
fromBlock: receipt.blockNumber,
toBlock: receipt.blockNumber
}, (errors, events) => {
for (let event in events) {
let returnValues = events[event].returnValues;
// Now do something with the event
}
});
}).catch(function (e) {
// Transaction rejected or failed
console.log(e);
});
}
Firefox 控制台中的结果将符合预期(参见最后一行 app.js:218):

Chrome 控制台中的结果将符合预期(参见最后一行 app.js:218):
