我用 nodejs + koa 写了一个应用,部分代码如下
router/home.js
'use strict';
const Router = require("koa-router");
const router = new Router({prefix: '/'});
router
.get('/', async (ctx, next) => {
await ctx.render("home", {
});
})
module.exports = router;
view/home.ejs
<html>
<head>
...
</head>
<body>
<button id="eth_requestAccounts">Login</button>
<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js@1.3.5/dist/web3.min.js"></script>
<script>
function showResult(node, msg) {
node.parent().append(" <span>" + msg + "</span>");
}
jQuery("#eth_requestAccounts").click(async function () {
requestAccounts = await ethereum.request({ method: 'eth_requestAccounts' });
showResult(jQuery("#eth_requestAccounts"), requestAccounts);
});
</script>
</body>
</hmtl>
现在的情况是当点击页面的中的 login 会自动呼叫出 metamask 这个浏览器插件,进行许可登录。
我想请问,是否可以将这段交互放到后端去,而不是在前端交互?是不是所有页面和浏览器插件之间的交互只能在前端?谢谢
是呀。肯定是浏览器执行才能触发插件的交互呀。
但是你可以通过后端通知前端,前端收到指令后触发。
一般方法有 socket、轮询之类的。
就是说你前端定时查后端,要不要单击按钮,后端说点,啪,前端点一下。