背景我正在使用 Puppeteer 创建一些 PDF。当 Puppeteer 加载它时,我需要将一些数据注入页面。问题我试过使用evaluateOnNewDocument()which 在使用Stringonly时成功。当我尝试使用Object它时失败了。我也尝试过,evaluate()无论我传入什么,它都失败了。例子// Works await page.evaluateOnNewDocument(() => { window.pdfData = {}; window.pdfData = "Some String"; });// Does not work await page.evaluateOnNewDocument(() => { window.pdfData = {}; window.pdfData = data; });// Failsawait page.evaluate(data => { window.pdfData = {}; window.pdfData = data;}, data);我想像这样访问这个对象,const data = window.pdfData;问题将数据对象传递到加载的 Puppeteer 页面上的窗口以便可以在页面内访问它以使用数据客户端的正确方法是什么?
1 回答
蛊毒传说
TA贡献1895条经验 获得超3个赞
传递对象 evaluate
您可以传递将被序列化为 JSON 的数据。
await page.evaluateOnNewDocument(data => { // <-- pass as parameter
window.pdfData = data; // <-- read it here
}, data); // <-- pass as argument
传递对象 evaluateOnNewDocument
evaluateOnNewDocument工作方式与 类似evaluate,不同之处在于它会在有新窗口/导航/框架时运行。这样,即使您导航到另一个页面,数据也会保留。
您可以在函数内部传递数据和读取。
await page.evaluateOnNewDocument(data => {
window.pdfData = data;
}, data);
添加回答
举报
0/150
提交
取消