- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个在 MATIC 网络上使用 MATIC 代币的应用程序。我想确保用户已使用 MetaMask 连接到该网络,这可能吗?
现在在附加到我的 html 页面的 client.js
中,我只有以下内容:
let accounts, web3, contract;
if (typeof window.ethereum !== 'undefined') {
console.log('MetaMask is installed!');
} else {
alert("Hello! Consider adding an ethereum wallet such as MetaMask to fully use this website.");
}
accounts = ethereum.request({ method: 'eth_requestAccounts' });
web3 = new Web3();
问题是,如果用户尝试与网站的其他功能进行交互,他们可能会尝试使用 ETH,这可能会使他们失去代币并且无法使用该功能。所以我想提示他们进入 MATIC 网络。
有没有办法让他们自动进入这个网络,而不需要他们手动将其放入 MetaMask?有助于减少摩擦。
这是我一直在后端 server.js
上为此应用程序使用的 MATIC 网络:
const WEB3_PROVIDER = "https://polygon-rpc.com"
// https://blog.polygon.technology/polygon-rpc-gateway-will-provide-a-free-high-performance-connection-to-the-polygon-pos-blockchain/
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
console.log("web3 already initialized.");
} else {
// set the provider you want from Web3.providers
web3 = new Web3(new Web3.providers.HttpProvider(WEB3_PROVIDER));
console.log("New web3 object initialized.");
}
最佳答案
您可以使用您的 web3 实例 ( web3 document ) 像这样检查用户网络:
const yourNetworkId = '137'
web3.eth.net.getId()
.then((networkId) => {
if (networkId != yourNetworkId) {
// MetaMask network is wrong
}
})
.catch((err) => {
// unable to retrieve network id
});
为了以编程方式添加网络(metamask document):
ethereum.request({
method: 'wallet_addEthereumChain',
params: [{
chainId: web3.utils.toHex('137'),
chainName: 'Polygon',
nativeCurrency: {
name: 'MATIC',
symbol: 'MATIC',
decimals: 18
},
rpcUrls: ['https://polygon-rpc.com'],
blockExplorerUrls: ['https://www.polygonscan.com']
}],
})
.then(() => console.log('network added'))
.catch(() => console.log('could not add network'))
如果您想以编程方式设置 Metamask 网络 (Metamask document):
ethereum.request({
method: 'wallet_switchEthereumChain',
params: [{ chainId: web3.utils.toHex('137') }],
})
.then(() => console.log('network has been set'))
.catch((e) => {
if (e.code === 4902) {
console.log('network is not available, add it')
} else {
console.log('could not set network')
}
})
您还可以在 Metamask 上监听 chainChanged
事件以检测用户何时更改 Metamask 网络 (metamask document):
ethereum.on("chainChanged", () => {
// if network was wrong, you can open a modal to disable activity and ask
// user to change network back to Polygon or even change it yourself on
// user clicking a button, but i don't suggest setting network by yourself
// without users permission because users may using other dApps on other
// networks at the same time which changing network immediately on chainChanged
// would be a bad UX
})
关于javascript - MetaMask Web3 : is there any way to make sure website user is connected to a particular network?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71071667/
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我有自己的网站并且存储了图片,但是当我尝试在 leagueoflegends.com 等网站的帖子上分享它们时,链接显示但图片不显示,这在我试图将我的图片发布到的所有网站中都会发生,我也使用图像链接:
我有一个 Web 服务器,我在其上应用不同的重写规则以重定向所有 http(s)://*.website.com对同一 URL 的请求:https://website.com .一切都按预期正常工作。
我为网站生成的证书有问题(在此处称为website.com)。 我可以输入浏览器http://www.website.com,并根据需要成功重定向到https://website.com(使用let'
现在我的网站是基于 PHP 和 Mysql 构建的。将其视为一个论坛。现在,当用户在我的网站 1(例如 www.website1.com)中发布回复时,我希望能够在我的姐妹网站中显示起始线程及其相关回
如果我通过 website.com 登录,然后输入 www.website.com,它不会显示我已登录,我必须再次执行此操作。有什么问题吗? 最佳答案 这是正常的。 session cookie 适用
我对 PHP 编码有些熟悉,但现在我正在使用 phpMyAdmin,并且在最基本的事情上遇到了问题。 我想使用给定的网站链接+零件号更新网站链接。 partnumber 在同一个表中给出。像这样的事情
我想将所有来自 www.website.com/whatever 的请求重定向到没有 www 的变体。如何在 Rails 中执行此操作?最佳方法是什么? 最佳答案 对此有两种选择。如果您想在 rail
这个问题在这里已经有了答案: 关闭 12 年前。 Possible Duplicate: What’s the point in having “www” in a URL? 您好,我几乎没有拥有网
我可以将 website.com/index.php 重定向到 website.com/home 但我找不到重定向 website.com< 的方法 到 website.com/home 我试过 Re
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
历经千辛万苦,我终于在我的网站上安装了 SSL 证书。现在,我可以添加 secure:always 行到 app.yaml 文件,它将所有链接重定向到 https。这很好用,除了 GAE 上的自定义域
如果 Google 的关键字规划器向我显示关键字“Web Design [city-name]”获得约 880 次搜索,而“Website Design [city-name]”获得约 620 次搜索
我知道这是一个开放式问题,但希望在线程被锁定之前它能得到一些好的答案... 我想知道有什么方法可以从客户端的角度以编程方式检查(与语言无关)网站是否在线(假设您不能对站点/服务器进行更改,但您可以依赖
我很好奇如何使网站移动设备友好..那么什么是最佳尺寸以及我如何让网站弄清楚它们是否在移动设备上。我还需要对我的设计和编码进行哪些限制才能使页面更无故障且加载速度更快... 最佳答案 这里真的有两个主要
我被要求找到一种明智的方法,让大多数流行网站检测我们的浏览器——它功能完整,但运行在相当受限的硬件上——作为“移动”浏览器。这个想法是,最流行的网站似乎都有移动版本,它的渲染速度更快,更适合屏幕。 我
有没有办法检测手机和手持设备上的 3G 和 2G 连接? 例如,如果我想在用户使用 3G 时提供高端网站,如果用户使用 2G 则提供高度优化的网站。 最佳答案 在 Android 2.2+ 中,有一个
我想添加一些统计数据——用户向其他用户发送了多少消息。现在,用户将转到他的面板并看到该号码。我应该执行吗 SELECT count(*) from MESSAGES where id=user.id
我已经在我的 php 网页中添加了代码,例如... 比之后 https://developers.google.com/speed建议 指定字符集 避免在元标记中使用字符集 最佳答案 使用 HTTP
我可以在我的移动网站中使用 cookie 或 session 对象来控制从 PHP 页面登录吗? 最佳答案 是的。 手机使用的网络浏览器通常支持 cookie(除非手机真的很旧),因此基于 cooki
我是一名优秀的程序员,十分优秀!