跳至主要内容
版本:22.5.0

Page.evaluateOnNewDocument() 方法

添加一个函数,该函数将在以下场景之一中调用

  • 每当页面导航时

  • 每当子框架附加或导航时。在这种情况下,该函数在最新附加框架的上下文中调用。

在创建文档后但在运行任何脚本之前调用该函数。这有助于修改 JavaScript 环境,例如播种 Math.random

签名:

class Page {
abstract evaluateOnNewDocument<
Params extends unknown[],
Func extends (...args: Params) => unknown = (...args: Params) => unknown,
>(
pageFunction: Func | string,
...args: Params
): Promise<NewDocumentScriptEvaluation>;
}

参数

参数类型描述
pageFunctionFunc | string在浏览器上下文中评估的函数
argsParams传递给 pageFunction 的参数

返回

Promise<NewDocumentScriptEvaluation>

示例

在页面加载之前覆盖 navigator.languages 属性的示例

// preload.js

// overwrite the `languages` property to use a custom getter
Object.defineProperty(navigator, 'languages', {
get: function () {
return ['en-US', 'en', 'bn'];
},
});

// In your puppeteer script, assuming the preload.js file is
// in same folder of our script.
const preloadFile = fs.readFileSync('./preload.js', 'utf8');
await page.evaluateOnNewDocument(preloadFile);