diff --git a/src/main/cdp/execution-context.ts b/src/main/cdp/execution-context.ts index 9b8bf16..db01a16 100644 --- a/src/main/cdp/execution-context.ts +++ b/src/main/cdp/execution-context.ts @@ -203,17 +203,18 @@ export class ExecutionContext { throw err; } - initContentScripts(scripts: ContentScript[]) { + async initContentScripts(scripts: ContentScript[]) { const options = { toolkitBinding: this.page.toolkitBinding, }; - for (const { fn, filename } of scripts) { + const promises = scripts.map(async ({ fn, filename }) => { const source = `(${fn.toString()})(${JSON.stringify(options)})\n//# sourceURL=${filename}\n`; - this.page.sendAndForget('Runtime.evaluate', { + await this.page.send('Runtime.evaluate', { contextId: this.executionContextId, expression: source, }); - } + }); + await Promise.allSettled(promises); } protected onExecutionContextsCleared() { diff --git a/src/main/cdp/frame.ts b/src/main/cdp/frame.ts index d32cbc9..5892e39 100644 --- a/src/main/cdp/frame.ts +++ b/src/main/cdp/frame.ts @@ -60,7 +60,7 @@ export class Frame extends EventEmitter { grantUniveralAccess: true, }); this._isolatedWorld = new ExecutionContext(this, executionContextId); - this._isolatedWorld.initContentScripts(runtimeScripts); + await this._isolatedWorld.initContentScripts(runtimeScripts); return this._isolatedWorld; } diff --git a/src/main/cdp/target.ts b/src/main/cdp/target.ts index 5f8dded..ed416f5 100644 --- a/src/main/cdp/target.ts +++ b/src/main/cdp/target.ts @@ -2,7 +2,7 @@ import { EventEmitter } from 'events'; import { Exception } from '../exception.js'; import { Browser } from './browser.js'; -import { runtimeScripts, stubScripts } from './inject/index.js'; +import { stubScripts } from './inject/index.js'; import { InterceptedRequest } from './interceptor.js'; import { Page, PageNavigateOptions, PageWaitOptions } from './page.js'; import { CdpFrame, CdpLifecycleEvent, CdpLoadingFailed, CdpRequestPaused, CdpRequestWillBeSent, CdpResponse, CdpResponseReceived, CdpTargetInfo, CdpTargetType } from './types.js'; @@ -382,12 +382,5 @@ export class Target extends EventEmitter { source: `(${fn.toString()})()` }); }); - runtimeScripts.forEach(({ fn, filename }) => { - const options = { - toolkitBinding: this.browser.config.toolkitBinding, - }; - const source = `(${fn.toString()})(${JSON.stringify(options)})\n//# sourceURL=${filename}\n`; - this.sendAndForget('Page.addScriptToEvaluateOnNewDocument', { source }); - }); } }