猿问

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

背景


我正在使用 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;

    });


// Fails

await page.evaluate(data => {

     window.pdfData = {};

     window.pdfData = data;

}, data);

我想像这样访问这个对象,


const data = window.pdfData;

问题


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


动漫人物
浏览 404回答 1
1回答

蛊毒传说

传递对象 evaluate您可以传递将被序列化为 JSON 的数据。await page.evaluateOnNewDocument(data => { // <-- pass as parameter&nbsp; window.pdfData = data; // <-- read it here}, data); // <-- pass as argument传递对象 evaluateOnNewDocumentevaluateOnNewDocument工作方式与 类似evaluate,不同之处在于它会在有新窗口/导航/框架时运行。这样,即使您导航到另一个页面,数据也会保留。您可以在函数内部传递数据和读取。await page.evaluateOnNewDocument(data => {&nbsp; window.pdfData = data;}, data);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答