javascript - 有没有办法将全局变量传递给 $$eval 函数?
问题描述
我正在使用 page.$$eval 在浏览器上下文中评估 div#Menu 。但是,我需要将 const 变量 myVar 中的值传递到浏览器上下文中,以便在该上下文中执行比较。但是,我在使用 $$eval 时遇到了范围界定问题。有没有解决的办法?
这是我制作的代码:
const myVar = 100;
const menuData = await page.$$eval("div#Menu", (Menu1) => {
return Menu1.map((Menu1Element) => {
console.log(myVar); //testing to see if myVar is passed into browser context
...
})[0];
}).catch(console.error);
我得到的错误消息 => 错误:评估失败:ReferenceError:myVar 未定义
解决方案
这是签名:
page.$$eval(selector, pageFunction[, ...args])
因此,您可以将 args 作为 pageFunction args 传递($$eval 中的第 3 个参数,这些将作为 args 传递给您的函数。
这是更新的代码片段。
const myVar = 100;
const menuData = await page.$$eval("div#Menu", (Menu1, varInsideFunction) => {
return Menu1.map((Menu1Element) => {
console.log(varInsideFunction); //testing to see if myVar is passed into browser context
...
})[0];
}, myVar).catch(console.error);
推荐阅读
- node.js - 如何在 prisma-binding npm 中获取总匹配记录数
- visual-studio - 当测试类派生自抽象基测试类时,如何使测试名称唯一
- java - 如何一次旋转一个字符?
- node.js - 如何在 mongodb 中使用 $lookup 从该表中获取与另一个表连接的数据
- firebase - 应用程序卡在启动屏幕上,然后显示错误“不存在捆绑 URL”
- java - 从 Eclipse 插件处理程序运行 java 程序
- database - Delphi SOAP 服务 - 与 Oracle 数据库的多个连接的问题
- sql-server - 如何获取 SSMS 的调试符号?(首选 17.9.1)
- c# - 为什么 MouseMove 事件发生在 MouseUp 事件之后?
- r - 从两列创建缺失值的数据子集