動漫人物
2021-05-18 08:35:40
背景我正在使用 Puppeteer 創(chuàng)建一些 PDF。當 Puppeteer 加載它時,我需要將一些數(shù)據(jù)注入頁面。問題我試過使用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;問題將數(shù)據(jù)對象傳遞到加載的 Puppeteer 頁面上的窗口以便可以在頁面內(nèi)訪問它以使用數(shù)據(jù)客戶端的正確方法是什么?
1 回答

蠱毒傳說
TA貢獻1895條經(jīng)驗 獲得超3個贊
傳遞對象 evaluate
您可以傳遞將被序列化為 JSON 的數(shù)據(jù)。
await page.evaluateOnNewDocument(data => { // <-- pass as parameter
window.pdfData = data; // <-- read it here
}, data); // <-- pass as argument
傳遞對象 evaluateOnNewDocument
evaluateOnNewDocument工作方式與 類似evaluate,不同之處在于它會在有新窗口/導(dǎo)航/框架時運行。這樣,即使您導(dǎo)航到另一個頁面,數(shù)據(jù)也會保留。
您可以在函數(shù)內(nèi)部傳遞數(shù)據(jù)和讀取。
await page.evaluateOnNewDocument(data => {
window.pdfData = data;
}, data);
添加回答
舉報
0/150
提交
取消