为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Puppeteer 将数据对象注入窗口

使用 Puppeteer 将数据对象注入窗口

动漫人物 2021-05-18 08:35:40
背景我正在使用 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);


查看完整回答
反对 回复 2021-06-11
  • 1 回答
  • 0 关注
  • 403 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信