Javascript 使用Puppeter将数据对象注入窗口

Javascript 使用Puppeter将数据对象注入窗口,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,背景 我正在使用木偶制作一些PDF。当Puppeter加载页面时,我需要向页面中注入一些数据 问题 // Works await page.evaluateOnNewDocument(() => { window.pdfData = {}; window.pdfData = "Some String"; }); // Does not work await page.evaluateOnNewDocument(() =

背景

我正在使用木偶制作一些PDF。当Puppeter加载页面时,我需要向页面中注入一些数据

问题

// Works
    await page.evaluateOnNewDocument(() => {
           window.pdfData = {};
           window.pdfData = "Some String";
    });

// Does not work 
    await page.evaluateOnNewDocument(() => {
           window.pdfData = {};
           window.pdfData = data;
    });

// Fails
await page.evaluate(data => {
     window.pdfData = {};
     window.pdfData = data;
}, data);
我尝试过使用
evaluateOnNewDocument()
,仅在使用
字符串时成功。当我尝试使用
对象时,它失败了。我还尝试了
evaluate()
,但无论传入什么,它都失败了

示例

// Works
    await page.evaluateOnNewDocument(() => {
           window.pdfData = {};
           window.pdfData = "Some String";
    });

// Does not work 
    await page.evaluateOnNewDocument(() => {
           window.pdfData = {};
           window.pdfData = data;
    });

// Fails
await page.evaluate(data => {
     window.pdfData = {};
     window.pdfData = data;
}, data);
我想这样访问这个对象

const data = window.pdfData;
问题

将数据对象传递到加载的Puppeter页面上的窗口中,以便可以在页面内访问它以使用数据客户端的正确方法是什么?

将对象传递到
评估

您可以传递将被序列化为JSON的数据

await page.evaluateOnNewDocument(data => { // <-- pass as parameter
  window.pdfData = data; // <-- read it here
}, data); // <-- pass as argument

data
变量中包含什么样的数据?我接受了你的答案,并对你投了赞成票。对不起,我不在城里,刚回来。在问了这个没有任何解释的问题两周后,我也被否决了。非常令人沮丧。谢谢你的帮助。我唯一需要更改的是在将数据分配给对象之前创建对象,如下所示,
window.pdfData={}。非常感谢你的帮助。希望我们不会继续无缘无故地减少选票。