彻底修复content莫名断开链接,导致devtool找不到游戏的bug

This commit is contained in:
xu_yanfeng 2025-03-07 15:51:42 +08:00
parent 81d4beaed8
commit 6cb3869a0c
2 changed files with 28 additions and 18 deletions

View File

@ -20,6 +20,11 @@ export class TabInfo {
let portContent: Content = new Content(tab, port, this); let portContent: Content = new Content(tab, port, this);
this.contentArray.push(portContent); this.contentArray.push(portContent);
this.updateFrames(); this.updateFrames();
// 之前持有的链接会断开content会重新发起链接重新连上之后如果只有一个人链接需要设置using状态否则devtools找不到content
if (this.contentArray.length === 1) {
const id = this.contentArray[0].frameID;
this.useFrame(id);
}
} }
public removePort(item: Content) { public removePort(item: Content) {
let index = this.contentArray.findIndex((el) => el === item); let index = this.contentArray.findIndex((el) => el === item);

View File

@ -1,7 +1,7 @@
// content.js 和原始界面共享DOM具有操作dom的能力 // content.js 和原始界面共享DOM具有操作dom的能力
// 但是不共享js,要想访问页面js,只能通过注入的方式 // 但是不共享js,要想访问页面js,只能通过注入的方式
import { ChromeConst } from "cc-plugin/src/chrome/const"; import { ChromeConst } from "cc-plugin/src/chrome/const";
import { debugLog, Msg, Page, PluginEvent } from "../../core/types"; import { debugLog, Page, PluginEvent } from "../../core/types";
import { ga } from "../../ga"; import { ga } from "../../ga";
import { GA_EventName } from "../../ga/type"; import { GA_EventName } from "../../ga/type";
import { DocumentEvent, GoogleAnalyticsData } from "../const"; import { DocumentEvent, GoogleAnalyticsData } from "../const";
@ -65,12 +65,15 @@ document.addEventListener(DocumentEvent.Inject2Content, (event: CustomEvent) =>
} }
}); });
// #region 和background通讯 // #region 和background通讯
let connect: chrome.runtime.Port = chrome.runtime.connect({ name: Page.Content }); let connect: chrome.runtime.Port = null;
connect.onDisconnect.addListener(() => { function doConnect() {
connect = chrome.runtime.connect({ name: Page.Content });
connect.onDisconnect.addListener(() => {
debugLog && console.log(...terminal.disconnect("")); debugLog && console.log(...terminal.disconnect(""));
connect = null; connect = null;
}); doConnect();
connect.onMessage.addListener((data: PluginEvent, sender: chrome.runtime.Port) => { });
connect.onMessage.addListener((data: PluginEvent, sender: chrome.runtime.Port) => {
const event = PluginEvent.create(data); const event = PluginEvent.create(data);
if (event.valid && event.check(Page.Background, Page.Content)) { if (event.valid && event.check(Page.Background, Page.Content)) {
debugLog && console.log(...terminal.chunkMessage(event.toChunk())); debugLog && console.log(...terminal.chunkMessage(event.toChunk()));
@ -81,5 +84,7 @@ connect.onMessage.addListener((data: PluginEvent, sender: chrome.runtime.Port) =
} else { } else {
throw new Error(`invalid data: ${data}`); throw new Error(`invalid data: ${data}`);
} }
}); });
}
doConnect();
injectScript(ChromeConst.script.inject); injectScript(ChromeConst.script.inject);