Puppeteer 中文文档v25.8.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>;
}

参数

参数

类型

说明

pageFunction

Func | string

要在浏览器上下文中求值的函数

args

Params

要传递给 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);