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