Skip to content

Commit bba12d2

Browse files
committed
🐛 兼容较低的浏览器内核 #647
1 parent 545d7c8 commit bba12d2

2 files changed

Lines changed: 27 additions & 23 deletions

File tree

src/app/service/service_worker/script.ts

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,13 @@ import Logger from "@App/app/logger/logger";
55
import LoggerCore from "@App/app/logger/core";
66
import Cache from "@App/app/cache";
77
import CacheKey from "@App/app/cache_key";
8-
import { checkSilenceUpdate, InfoNotification, openInCurrentTab, randomMessageFlag } from "@App/pkg/utils/utils";
8+
import {
9+
checkSilenceUpdate,
10+
getBrowserType,
11+
InfoNotification,
12+
openInCurrentTab,
13+
randomMessageFlag,
14+
} from "@App/pkg/utils/utils";
915
import { ltever } from "@App/pkg/utils/semver";
1016
import type { Script, SCRIPT_RUN_STATUS, ScriptDAO, ScriptRunResource } from "@App/app/repo/scripts";
1117
import { SCRIPT_STATUS_DISABLE, SCRIPT_STATUS_ENABLE, ScriptCodeDAO } from "@App/app/repo/scripts";
@@ -107,7 +113,23 @@ export class ScriptService {
107113
types: ["main_frame"],
108114
}
109115
);
110-
// 获取i18n
116+
// 兼容 chrome 内核 < 128 处理
117+
const condition: chrome.declarativeNetRequest.RuleCondition = {
118+
regexFilter: "^([^#]+?)\\.user(\\.bg|\\.sub)?\\.js((\\?).*|$)",
119+
resourceTypes: [chrome.declarativeNetRequest.ResourceType.MAIN_FRAME],
120+
requestMethods: ["get" as chrome.declarativeNetRequest.RequestMethod],
121+
};
122+
const browserType = getBrowserType();
123+
if (browserType.chrome && browserType.chromeVersion >= 128) {
124+
condition.excludedResponseHeaders = [
125+
{
126+
header: "Content-Type",
127+
values: ["text/html"],
128+
},
129+
];
130+
} else {
131+
condition.excludedRequestDomains = ["github.com"];
132+
}
111133
// 重定向到脚本安装页
112134
chrome.declarativeNetRequest.updateDynamicRules(
113135
{
@@ -122,17 +144,7 @@ export class ScriptService {
122144
regexSubstitution: `https://docs.scriptcat.org${localePath}/docs/script_installation/#url=\\0`,
123145
},
124146
},
125-
condition: {
126-
regexFilter: "^([^#]+?)\\.user(\\.bg|\\.sub)?\\.js((\\?).*|$)",
127-
resourceTypes: [chrome.declarativeNetRequest.ResourceType.MAIN_FRAME],
128-
requestMethods: ["get" as chrome.declarativeNetRequest.RequestMethod],
129-
excludedResponseHeaders: [
130-
{
131-
header: "Content-Type",
132-
values: ["text/html"],
133-
},
134-
],
135-
},
147+
condition: condition,
136148
},
137149
],
138150
},

src/pkg/utils/utils.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,5 @@
11
import type { Metadata, Script } from "@App/app/repo/scripts";
22

3-
// export function randomString(e = 32): string {
4-
// const t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz";
5-
// const a = t.length;
6-
// const n = new Array(e);
7-
// for (let i = 0; i < e; i++) {
8-
// n[i] = t[(Math.random() * a) | 0];
9-
// }
10-
// return n.join("");
11-
// }
12-
133
function randNum(a: number, b: number) {
144
return Math.floor(Math.random() * (b - a + 1)) + a;
155
}
@@ -235,6 +225,7 @@ export function getBrowserType() {
235225
webkit: 0, // Safari, Orion
236226
chrome: 0, // Chrome, Chromium, Brave, Edge
237227
unknown: 0,
228+
chromeVersion: 0,
238229
};
239230
if (isFirefox()) {
240231
o.firefox = 1;
@@ -250,6 +241,7 @@ export function getBrowserType() {
250241
const isEdgeBrowser = isEdge();
251242
const chromeVersion = getBrowserVersion();
252243
o.chrome = (isEdgeBrowser ? 2 : 1) | (chromeVersion < 120 ? 4 : chromeVersion < 138 ? 8 : 16);
244+
o.chromeVersion = chromeVersion;
253245
} else {
254246
o.unknown = 1;
255247
}

0 commit comments

Comments
 (0)