fix: create frameon demand

This commit is contained in:
Rui Figueira 2024-04-12 14:08:49 +01:00
parent 75f8f96ba2
commit 53b8713692
2 changed files with 4 additions and 4 deletions

View file

@ -76,15 +76,15 @@ export class BrowserContext extends EventEmitter {
eventsHelper.removeEventListeners(this._listeners);
}
private _onMessage({ bindingName, args }: any, { tab, frameId }: chrome.runtime.MessageSender, sendResponse: (response: any) => void) {
private _onMessage({ bindingName, args }: any, { tab, frameId, url }: chrome.runtime.MessageSender, sendResponse: (response: any) => void) {
const tabId = tab?.id;
// frameId may be 0!
if (!bindingName || !tabId || typeof frameId !== 'number')
return;
const frame = this._pages.get(tabId)?._frames.get(frameId);
const frame = this._pages.get(tabId)?._frameFor(frameId);
if (!frame)
return;
frame._url = url;
const func = this._bindings.get(bindingName);
if (!func)
throw new Error(`No binding for ${bindingName}`);

View file

@ -63,7 +63,7 @@ export class Page extends EventEmitter {
await chrome.tabs.update(this._tabId, { active: true });
}
private _frameFor(frameId: number) {
_frameFor(frameId: number) {
let frame = this._frames.get(frameId);
if (!frame) {
frame = new Frame(this, frameId);