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