$eval 和 $$eval 在 page/frame/elementHandle 中执行的上下文是什么?
In which context does $eval & $$eval execute in page/frame/elementHandle?
这真让我着迷。我无法访问 $$eval() 中的全局变量,也无法访问其他模块。
const util = require('util');
GlobalFlag=true;
.......
await page.$$eval(selector, (e) => {
console.log(e);
GlobalFlag=false;
console.log(util.inspect(e));
});
给我 错误:评估失败:参考错误:未定义实用程序
$eval
在客户端上下文中计算函数。它被字符串化并用 eval
调用。它无权访问节点 GlobalFlag
,因为它不存在于浏览器全局范围内。
$eval
和 $$eval
support additional arguments 将传递给评估的函数,以防应该在那里读取变量。为了写入变量,值应该从函数返回并在节点上下文中赋值。
GlobalFlag = await page.$$eval(selector, (e) => {
console.log(JSON.stringify(e, null, 2));
return false;
});
这真让我着迷。我无法访问 $$eval() 中的全局变量,也无法访问其他模块。
const util = require('util');
GlobalFlag=true;
.......
await page.$$eval(selector, (e) => {
console.log(e);
GlobalFlag=false;
console.log(util.inspect(e));
});
给我 错误:评估失败:参考错误:未定义实用程序
$eval
在客户端上下文中计算函数。它被字符串化并用 eval
调用。它无权访问节点 GlobalFlag
,因为它不存在于浏览器全局范围内。
$eval
和 $$eval
support additional arguments 将传递给评估的函数,以防应该在那里读取变量。为了写入变量,值应该从函数返回并在节点上下文中赋值。
GlobalFlag = await page.$$eval(selector, (e) => {
console.log(JSON.stringify(e, null, 2));
return false;
});