跳至主要內容
版本: 23.11.1

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);