fix: create frameon demand
This commit is contained in:
parent
75f8f96ba2
commit
53b8713692
|
|
@ -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}`);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue