Skip to content

Commit 0e2f817

Browse files
committed
🐛 兼容较低的浏览器内核 #647
1 parent 0b2668a commit 0e2f817

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 { cacheInstance } from "@App/app/cache";
77
import { CACHE_KEY_SCRIPT_INFO } 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";
@@ -112,7 +118,23 @@ export class ScriptService {
112118
types: ["main_frame"],
113119
}
114120
);
115-
// 获取i18n
121+
// 兼容 chrome 内核 < 128 处理
122+
const condition: chrome.declarativeNetRequest.RuleCondition = {
123+
regexFilter: "^([^#]+?)\\.user(\\.bg|\\.sub)?\\.js((\\?).*|$)",
124+
resourceTypes: [chrome.declarativeNetRequest.ResourceType.MAIN_FRAME],
125+
requestMethods: ["get" as chrome.declarativeNetRequest.RequestMethod],
126+
};
127+
const browserType = getBrowserType();
128+
if (browserType.chrome && browserType.chromeVersion >= 128) {
129+
condition.excludedResponseHeaders = [
130+
{
131+
header: "Content-Type",
132+
values: ["text/html"],
133+
},
134+
];
135+
} else {
136+
condition.excludedRequestDomains = ["github.com"];
137+
}
116138
// 重定向到脚本安装页
117139
chrome.declarativeNetRequest.updateDynamicRules(
118140
{
@@ -127,17 +149,7 @@ export class ScriptService {
127149
regexSubstitution: `${DocumentationSite}${localePath}/docs/script_installation/#url=\\0`,
128150
},
129151
},
130-
condition: {
131-
regexFilter: "^([^#]+?)\\.user(\\.bg|\\.sub)?\\.js((\\?).*|$)",
132-
resourceTypes: [chrome.declarativeNetRequest.ResourceType.MAIN_FRAME],
133-
requestMethods: ["get" as chrome.declarativeNetRequest.RequestMethod],
134-
excludedResponseHeaders: [
135-
{
136-
header: "Content-Type",
137-
values: ["text/html"],
138-
},
139-
],
140-
},
152+
condition: condition,
141153
},
142154
],
143155
},

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 { SCMetadata, 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
}
@@ -219,6 +209,7 @@ export function getBrowserType() {
219209
webkit: 0, // Safari, Orion
220210
chrome: 0, // Chrome, Chromium, Brave, Edge
221211
unknown: 0,
212+
chromeVersion: 0,
222213
};
223214
if (isFirefox()) {
224215
o.firefox = 1;
@@ -234,6 +225,7 @@ export function getBrowserType() {
234225
const isEdgeBrowser = isEdge();
235226
const chromeVersion = getBrowserVersion();
236227
o.chrome = (isEdgeBrowser ? 2 : 1) | (chromeVersion < 120 ? 4 : chromeVersion < 138 ? 8 : 16);
228+
o.chromeVersion = chromeVersion;
237229
} else {
238230
o.unknown = 1;
239231
}

0 commit comments

Comments
 (0)