Javascript 使用Puppeter将数据对象注入窗口
背景 我正在使用木偶制作一些PDF。当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(() =
// 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={}代码>。非常感谢你的帮助。希望我们不会继续无缘无故地减少选票。