mirror of
https://github.com/tidys/cc-inspector-chrome
synced 2025-04-12 05:01:03 +00:00
彻底修复content莫名断开链接,导致devtool找不到游戏的bug
This commit is contained in:
parent
81d4beaed8
commit
6cb3869a0c
@ -20,6 +20,11 @@ export class TabInfo {
|
||||
let portContent: Content = new Content(tab, port, this);
|
||||
this.contentArray.push(portContent);
|
||||
this.updateFrames();
|
||||
// 之前持有的链接会断开,content会重新发起链接,重新连上之后,如果只有一个人链接,需要设置using状态,否则devtools找不到content
|
||||
if (this.contentArray.length === 1) {
|
||||
const id = this.contentArray[0].frameID;
|
||||
this.useFrame(id);
|
||||
}
|
||||
}
|
||||
public removePort(item: Content) {
|
||||
let index = this.contentArray.findIndex((el) => el === item);
|
||||
|
@ -1,7 +1,7 @@
|
||||
// content.js 和原始界面共享DOM,具有操作dom的能力
|
||||
// 但是不共享js,要想访问页面js,只能通过注入的方式
|
||||
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_EventName } from "../../ga/type";
|
||||
import { DocumentEvent, GoogleAnalyticsData } from "../const";
|
||||
@ -65,21 +65,26 @@ document.addEventListener(DocumentEvent.Inject2Content, (event: CustomEvent) =>
|
||||
}
|
||||
});
|
||||
// #region 和background通讯
|
||||
let connect: chrome.runtime.Port = chrome.runtime.connect({ name: Page.Content });
|
||||
connect.onDisconnect.addListener(() => {
|
||||
debugLog && console.log(...terminal.disconnect(""));
|
||||
connect = null;
|
||||
});
|
||||
connect.onMessage.addListener((data: PluginEvent, sender: chrome.runtime.Port) => {
|
||||
const event = PluginEvent.create(data);
|
||||
if (event.valid && event.check(Page.Background, Page.Content)) {
|
||||
debugLog && console.log(...terminal.chunkMessage(event.toChunk()));
|
||||
event.reset(Page.Content, Page.Inject);
|
||||
const e = new CustomEvent(DocumentEvent.Content2Inject, { detail: event });
|
||||
debugLog && console.log(...terminal.chunkSend(event.toChunk()));
|
||||
document.dispatchEvent(e);
|
||||
} else {
|
||||
throw new Error(`invalid data: ${data}`);
|
||||
}
|
||||
});
|
||||
let connect: chrome.runtime.Port = null;
|
||||
function doConnect() {
|
||||
connect = chrome.runtime.connect({ name: Page.Content });
|
||||
connect.onDisconnect.addListener(() => {
|
||||
debugLog && console.log(...terminal.disconnect(""));
|
||||
connect = null;
|
||||
doConnect();
|
||||
});
|
||||
connect.onMessage.addListener((data: PluginEvent, sender: chrome.runtime.Port) => {
|
||||
const event = PluginEvent.create(data);
|
||||
if (event.valid && event.check(Page.Background, Page.Content)) {
|
||||
debugLog && console.log(...terminal.chunkMessage(event.toChunk()));
|
||||
event.reset(Page.Content, Page.Inject);
|
||||
const e = new CustomEvent(DocumentEvent.Content2Inject, { detail: event });
|
||||
debugLog && console.log(...terminal.chunkSend(event.toChunk()));
|
||||
document.dispatchEvent(e);
|
||||
} else {
|
||||
throw new Error(`invalid data: ${data}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
doConnect();
|
||||
injectScript(ChromeConst.script.inject);
|
||||
|
Loading…
x
Reference in New Issue
Block a user