diff --git a/src/app/service/service_worker/runtime.ts b/src/app/service/service_worker/runtime.ts
index 7c648b7..3cb82d4 100644
--- a/src/app/service/service_worker/runtime.ts
+++ b/src/app/service/service_worker/runtime.ts
@@ -238,7 +238,7 @@ export class RuntimeService {
return undefined;
}
// 如果是iframe,判断是否允许在iframe里运行
- if (chromeSender.frameId !== undefined) {
+ if (chromeSender.frameId) {
if (scriptRes.metadata.noframes) {
return undefined;
}
@@ -485,7 +485,9 @@ export class RuntimeService {
// 如果脚本开启, 则注册脚本
if (this.isEnableDeveloperMode && script.status === SCRIPT_STATUS_ENABLE) {
- if (!scriptRes.metadata["noframes"]) {
+ if (scriptRes.metadata["noframes"]) {
+ registerScript.allFrames = false;
+ } else {
registerScript.allFrames = true;
}
if (scriptRes.metadata["run-at"]) {
diff --git a/src/locales/zh-CN/translation.json b/src/locales/zh-CN/translation.json
index cdf42f5..661ce64 100644
--- a/src/locales/zh-CN/translation.json
+++ b/src/locales/zh-CN/translation.json
@@ -369,5 +369,7 @@
"export_success": "导出成功",
"get_backup_dir_url_failed": "获取备份目录地址失败",
"get_backup_files_failed": "获取备份文件失败",
- "develop_mode_guide": "检测到当前未开启开发者模式,您的脚本无法正常使用,👉点我了解如何开启"
+ "develop_mode_guide": "检测到当前未开启开发者模式,您的脚本无法正常使用,👉点我了解如何开启",
+ "enable_script_failed": "脚本开启失败",
+ "disable_script_failed": "脚本关闭失败"
}
\ No newline at end of file
diff --git a/src/pages/options/routes/ScriptList.tsx b/src/pages/options/routes/ScriptList.tsx
index 53986e9..0fb64cc 100644
--- a/src/pages/options/routes/ScriptList.tsx
+++ b/src/pages/options/routes/ScriptList.tsx
@@ -81,6 +81,8 @@ import {
requestStopScript,
requestRunScript,
scriptClient,
+ enableLoading,
+ updateEnableStatus,
} from "@App/pages/store/features/script";
import { message, systemConfig } from "@App/pages/store/global";
import { SynchronizeClient, ValueClient } from "@App/app/service/service_worker/client";
@@ -706,19 +708,23 @@ function ScriptList() {
type="primary"
size="mini"
onClick={() => {
- const uuids: string[] = [];
+ const enableAction = (enable: boolean) => {
+ const uuids = select.map((item) => item.uuid);
+ dispatch(enableLoading({ uuids: uuids, loading: true }));
+ Promise.allSettled(uuids.map((uuid) => scriptClient.enable(uuid, enable))).finally(() => {
+ dispatch(updateEnableStatus({ uuids: uuids, enable: enable }));
+ dispatch(enableLoading({ uuids: uuids, loading: false }));
+ });
+ };
switch (action) {
case "enable":
- select.forEach((item) => {
- dispatch(requestEnableScript({ uuid: item.uuid, enable: true }));
- });
+ enableAction(true);
break;
case "disable":
- select.forEach((item) => {
- dispatch(requestEnableScript({ uuid: item.uuid, enable: false }));
- });
+ enableAction(false);
break;
case "export":
+ const uuids: string[] = [];
select.forEach((item) => {
uuids.push(item.uuid);
});
diff --git a/src/pages/store/features/script.ts b/src/pages/store/features/script.ts
index b6fd143..fb9346d 100644
--- a/src/pages/store/features/script.ts
+++ b/src/pages/store/features/script.ts
@@ -102,6 +102,22 @@ export const scriptSlice = createAppSlice({
script.runStatus = action.payload.runStatus;
}
},
+ updateEnableStatus: (state, action: PayloadAction<{ uuids: string[]; enable: boolean }>) => {
+ state.scripts = state.scripts.map((s) => {
+ if (action.payload.uuids.includes(s.uuid)) {
+ s.status = action.payload.enable ? SCRIPT_STATUS_ENABLE : SCRIPT_STATUS_DISABLE;
+ }
+ return s;
+ });
+ },
+ enableLoading(state, action: PayloadAction<{ uuids: string[]; loading: boolean }>) {
+ state.scripts = state.scripts.map((s) => {
+ if (action.payload.uuids.includes(s.uuid)) {
+ s.enableLoading = action.payload.loading;
+ }
+ return s;
+ });
+ },
},
extraReducers: (builder) => {
builder
@@ -144,6 +160,6 @@ export const scriptSlice = createAppSlice({
},
});
-export const { sortScript, upsertScript, deleteScript } = scriptSlice.actions;
+export const { sortScript, upsertScript, deleteScript, enableLoading, updateEnableStatus } = scriptSlice.actions;
export const { selectScripts } = scriptSlice.selectors;
diff --git a/src/pkg/utils/match.test.ts b/src/pkg/utils/match.test.ts
index 7bcad1e..43dced8 100644
--- a/src/pkg/utils/match.test.ts
+++ b/src/pkg/utils/match.test.ts
@@ -179,6 +179,12 @@ describe("parsePatternMatchesURL", () => {
host: "127.0.0.1",
path: "",
});
+ const matches4 = parsePatternMatchesURL("*://*/*");
+ expect(matches4).toEqual({
+ scheme: "*",
+ host: "*",
+ path: "*",
+ });
});
it("search", () => {
// 会忽略掉search部分