Skip to content

Commit bd35bdf

Browse files
committed
Merge branch 'main' into release/v1.3
2 parents 2e5c601 + e635911 commit bd35bdf

11 files changed

Lines changed: 115 additions & 73 deletions

File tree

src/app/service/service_worker/index.ts

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -205,39 +205,37 @@ export default class ServiceWorkerManager {
205205
chrome.tabs.create({ url: `${DocumentationSite}${localePath}/docs/use/install_comple` });
206206
} else if (details.reason === "update") {
207207
const url = `${DocumentationSite}${localePath}/docs/change/${ExtVersion.includes("-") ? "beta-changelog/" : ""}#${ExtVersion}`;
208-
getCurrentTab()
209-
.then((tab) => {
210-
// 检查是否正在播放视频,或者窗口未激活
211-
const openInBackground = !tab || tab.audible === true || !tab.active;
212-
// chrome.tabs.create 传回 Promise<chrome.tabs.Tab>
213-
return chrome.tabs.create({
214-
url,
215-
active: !openInBackground,
216-
index: !tab ? undefined : tab.index + 1,
217-
windowId: !tab ? undefined : tab.windowId,
208+
// 如果只是修复版本,只弹出通知不打开页面
209+
// beta版本还是每次都打开更新页面
210+
InfoNotification(t("ext_update_notification"), t("ext_update_notification_desc", { version: ExtVersion }));
211+
if (ExtVersion.endsWith(".0")) {
212+
getCurrentTab()
213+
.then((tab) => {
214+
// 检查是否正在播放视频,或者窗口未激活
215+
const openInBackground = !tab || tab.audible === true || !tab.active;
216+
// chrome.tabs.create 传回 Promise<chrome.tabs.Tab>
217+
return chrome.tabs.create({
218+
url,
219+
active: !openInBackground,
220+
index: !tab ? undefined : tab.index + 1,
221+
windowId: !tab ? undefined : tab.windowId,
222+
});
223+
})
224+
.catch((e) => {
225+
console.error(e);
218226
});
219-
})
220-
.then((_createdTab) => {
221-
// 当新 Tab 成功建立时才执行
222-
InfoNotification(
223-
t("ext_update_notification"),
224-
t("ext_update_notification_desc", { version: ExtVersion })
225-
);
226-
})
227-
.catch((e) => {
228-
console.error(e);
229-
});
227+
}
230228
}
231229
});
232-
});
233230

234-
// 监听扩展卸载事件
235-
watchLanguageChange(() => {
236-
chrome.runtime.setUninstallURL(`${DocumentationSite}${localePath}/uninstall`, () => {
237-
const lastError = chrome.runtime.lastError;
238-
if (lastError) {
239-
console.error("chrome.runtime.lastError in chrome.runtime.setUninstallURL:", lastError);
240-
}
231+
// 监听扩展卸载事件
232+
watchLanguageChange(() => {
233+
chrome.runtime.setUninstallURL(`${DocumentationSite}${localePath}/uninstall`, () => {
234+
const lastError = chrome.runtime.lastError;
235+
if (lastError) {
236+
console.error("chrome.runtime.lastError in chrome.runtime.setUninstallURL:", lastError);
237+
}
238+
});
241239
});
242240
});
243241
}

src/app/service/service_worker/runtime.ts

Lines changed: 37 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,6 @@ import { CompiledResourceDAO } from "@App/app/repo/resource";
5353
import { setOnTabURLChanged } from "./url_monitor";
5454
import { scriptToMenu, type TPopupPageLoadInfo } from "./popup_scriptmenu";
5555

56-
// 避免使用版本号控制导致代码理解混乱
57-
// 用来清除 UserScript API 里的旧缓存
58-
const USERSCRIPTS_REGISTER_CONTROL = "a5564f38-d9b3-43d0-8520-3a2950d6a61d";
59-
6056
const ORIGINAL_URLMATCH_SUFFIX = "{ORIGINAL}"; // 用于标记原始URLPatterns的后缀
6157

6258
const runtimeGlobal = {
@@ -264,21 +260,12 @@ export class RuntimeService {
264260
}
265261

266262
async waitInit() {
267-
const [registerControl, cRuntimeStartFlag, compiledResources, allScripts] = await Promise.all([
268-
chrome.storage.local.get("userscripts_register_control"),
263+
const [cRuntimeStartFlag, compiledResources, allScripts] = await Promise.all([
269264
cacheInstance.get<boolean>("runtimeStartFlag"),
270265
this.compiledResourceDAO.all(),
271266
this.scriptDAO.all(),
272267
]);
273268

274-
if (registerControl?.userscripts_register_control !== USERSCRIPTS_REGISTER_CONTROL) {
275-
await Promise.allSettled([
276-
chrome.userScripts?.unregister(),
277-
chrome.scripting.unregisterContentScripts(),
278-
chrome.storage.local.set({ userscripts_register_control: USERSCRIPTS_REGISTER_CONTROL }),
279-
]);
280-
}
281-
282269
const unregisterScriptIds = [] as string[];
283270
// 没有 CompiledResources 表示这是 没有启用脚本 或 代码有改变需要重新安装。
284271
// 这个情况会把所有有效脚本跟Inject&Content脚本先取消注册。后续载入时会重新以新代码注册。
@@ -587,6 +574,32 @@ export class RuntimeService {
587574
if (!this.isUserScriptsAvailable) {
588575
// 未开启加上警告引导
589576
this.showNoDeveloperModeWarning();
577+
let cid: ReturnType<typeof setInterval> | number;
578+
cid = setInterval(async () => {
579+
if (!this.isUserScriptsAvailable) {
580+
// 注:optional permission 的设计会触发 chrome.permissions.onAdded
581+
// this.isUserScriptsAvailable 自动转为 true, 不需要检测
582+
try {
583+
const scriptId = `undefined-test-${Date.now()}`;
584+
await chrome.userScripts.register([
585+
{
586+
id: scriptId,
587+
js: [{ code: "void 0;" }],
588+
matches: ["https://not-found.scriptcat.org/"],
589+
world: "USER_SCRIPT",
590+
},
591+
]);
592+
await chrome.userScripts.unregister({ ids: [scriptId] });
593+
} catch (_e) {
594+
// 预期出错,不执行后续
595+
return;
596+
}
597+
}
598+
clearInterval(cid);
599+
cid = 0;
600+
// 主要针对 Allow User Scripts 设计
601+
chrome.runtime.reload();
602+
}, 500);
590603
}
591604

592605
// 初始化:加载黑名单
@@ -1429,12 +1442,16 @@ export class RuntimeService {
14291442
if (forced ? false : !this.isUserScriptsAvailable || !this.isLoadScripts) {
14301443
return;
14311444
}
1432-
const result = await chrome.userScripts?.getScripts({ ids: uuids });
1433-
if (!result) return; // 没 userScripts API 权限
1434-
const filteredIds = result.map((entry) => entry.id).filter((id) => !!id);
1435-
if (filteredIds.length > 0) {
1436-
// 修改脚本状态为disable,浏览器取消注册该脚本
1437-
await chrome.userScripts.unregister({ ids: filteredIds });
1445+
try {
1446+
const result = await chrome.userScripts?.getScripts({ ids: uuids });
1447+
if (!result || typeof result !== "object" || typeof result.length !== "number") return; // 没 userScripts API 权限
1448+
const filteredIds = result.map((entry) => entry.id).filter((id) => !!id);
1449+
if (filteredIds.length > 0) {
1450+
// 修改脚本状态为disable,浏览器取消注册该脚本
1451+
await chrome.userScripts.unregister({ ids: filteredIds });
1452+
}
1453+
} catch (e) {
1454+
console.error("unregistryPageScripts error:", e);
14381455
}
14391456
}
14401457
}

src/locales/de-DE/translation.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,9 +415,10 @@
415415
"get_backup_dir_url_failed": "Backup-Verzeichnis-Adresse abrufen fehlgeschlagen",
416416
"get_backup_files_failed": "Backup-Dateien abrufen fehlgeschlagen",
417417
"request_permission": "Beantragen Sie Genehmigungen",
418-
"develop_mode_guide": "Der 'Entwicklermodus' ist derzeit nicht aktiviert, daher können die Skripte nicht richtig ausgeführt werden. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Hier klicken, um zu erfahren, wie man ihn aktiviert</a>.",
418+
"develop_mode_guide": "Der 'Entwicklermodus' ist derzeit nicht aktiviert, daher können die Skripte nicht richtig ausgeführt werden. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Hier klicken, um zu erfahren, wie man ihn aktiviert</a>",
419419
"allow_user_script_guide": "'Nutzerskripts zulassen' ist derzeit nicht aktiviert, daher können die Skripte nicht richtig ausgeführt werden. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Hier klicken, um zu erfahren, wie man es aktiviert</a>",
420420
"lower_version_browser_guide": "Ihr Browser ist zu veraltet, daher können die Skripte nicht richtig ausgeführt werden. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Hier klicken, um mehr zu erfahren</a>",
421+
"click_to_reload": "👉Zum Neuladen klicken",
421422
"confirm_leave_page": "Derzeit im Bearbeitungsstatus. Das Navigieren zu anderen Seiten führt zum Verlust des aktuellen Inhalts. Navigieren?",
422423
"page_in_blacklist": "Die aktuelle Seite ist auf der Blacklist und kann keine Skripte verwenden",
423424
"baidu_netdisk": "Baidu Netdisk",

src/locales/en-US/translation.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,9 +415,10 @@
415415
"get_backup_dir_url_failed": "Failed to get backup directory address",
416416
"get_backup_files_failed": "Failed to fetch backups",
417417
"request_permission": "Request Permission",
418-
"develop_mode_guide": "'Developer mode' is currently not enabled, so the scripts cannot run properly. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉tap to learn how to enable</a>.",
418+
"develop_mode_guide": "'Developer mode' is currently not enabled, so the scripts cannot run properly. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉tap to learn how to enable</a>",
419419
"allow_user_script_guide": "'Allow User Scripts' is currently not enabled, so the scripts cannot run properly. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉tap to learn how to enable</a>",
420420
"lower_version_browser_guide": "Your browser is too outdated, so the scripts cannot run properly. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Click me to learn more</a>",
421+
"click_to_reload": "👉Click to Reload",
421422
"confirm_leave_page": "Currently editing status. Leaving this page will lose the current content. Do you want to leave?",
422423
"page_in_blacklist": "The current page is blacklisted, cannot use script",
423424
"baidu_netdisk": "BaiduNetdisk",

src/locales/ja-JP/translation.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,9 +415,10 @@
415415
"get_backup_dir_url_failed": "バックアップディレクトリアドレスの取得に失敗しました",
416416
"get_backup_files_failed": "バックアップファイルの取得に失敗しました",
417417
"request_permission": "権限をリクエストする",
418-
"develop_mode_guide": "現在「デベロッパーモード」が有効ではないため、スクリプトは正常に動作しません。<a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉有効化の方法はこちら</a>",
418+
"develop_mode_guide": "現在「デベロッパーモード」が有効ではないため、スクリプトは正常に動作しません。<a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉有効化の方法はこちら</a>",
419419
"allow_user_script_guide": "現在「ユーザー スクリプトを許可する」が有効ではないため、スクリプトは正常に動作しません。<a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉有効化の方法はこちら</a>",
420420
"lower_version_browser_guide": "ご使用のブラウザは古すぎるため、スクリプトは正常に動作しません。<a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉詳しくはこちら</a>",
421+
"click_to_reload": "👉再読み込みする",
421422
"confirm_leave_page": "現在編集中です。他のページに移動すると現在の内容が失われます。移動しますか?",
422423
"page_in_blacklist": "現在のページはブラックリストにあり、スクリプトを使用できません",
423424
"baidu_netdisk": "百度ネットディスク",

src/locales/ru-RU/translation.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,9 +415,10 @@
415415
"get_backup_dir_url_failed": "Ошибка получения адреса папки резервных копий",
416416
"get_backup_files_failed": "Ошибка получения файлов резервных копий",
417417
"request_permission": "Запрос разрешения",
418-
"develop_mode_guide": "«Режим разработчика» сейчас отключён, поэтому скрипты не могут работать корректно. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Нажмите, чтобы узнать, как включить</a>.",
418+
"develop_mode_guide": "«Режим разработчика» сейчас отключён, поэтому скрипты не могут работать корректно. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Нажмите, чтобы узнать, как включить</a>",
419419
"allow_user_script_guide": "«Разрешить пользовательские скрипты» сейчас отключён, поэтому скрипты не могут работать корректно. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Нажмите, чтобы узнать, как включить</a>",
420420
"lower_version_browser_guide": "Ваш браузер слишком устарел, поэтому скрипты не могут работать корректно. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Нажмите, чтобы узнать подробнее</a>",
421+
"click_to_reload": "👉Нажмите для перезагрузки",
421422
"confirm_leave_page": "В настоящее время идет редактирование. Переход на другую страницу приведет к потере текущего содержимого. Продолжить переход?",
422423
"page_in_blacklist": "Текущая страница находится в черном списке, невозможно использовать скрипты",
423424
"baidu_netdisk": "Baidu Netdisk",

src/locales/vi-VN/translation.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,9 +415,10 @@
415415
"get_backup_dir_url_failed": "Không thể lấy địa chỉ thư mục sao lưu",
416416
"get_backup_files_failed": "Không thể lấy các bản sao lưu",
417417
"request_permission": "Yêu cầu quyền",
418-
"develop_mode_guide": "'Chế độ nhà phát triển' hiện chưa được bật, nên các script không thể hoạt động đúng cách. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Nhấn để xem cách bật</a>.",
418+
"develop_mode_guide": "'Chế độ nhà phát triển' hiện chưa được bật, nên các script không thể hoạt động đúng cách. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Nhấn để xem cách bật</a>",
419419
"allow_user_script_guide": "'Cho phép tập lệnh người dùng' hiện chưa được bật, nên các script không thể hoạt động đúng cách. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Nhấn để xem cách bật</a>",
420420
"lower_version_browser_guide": "Trình duyệt của bạn quá cũ, nên các script không thể hoạt động đúng cách. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Nhấn để xem thêm</a>",
421+
"click_to_reload": "👉Nhấp chuột để tải lại",
421422
"confirm_leave_page": "Hiện đang ở trạng thái chỉnh sửa. Rời khỏi trang này sẽ làm mất nội dung hiện tại. Bạn có muốn rời đi không?",
422423
"page_in_blacklist": "Trang hiện tại nằm trong danh sách đen, không thể sử dụng script",
423424
"baidu_netdisk": "Baidunetdisk",

src/locales/zh-CN/translation.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,9 +415,10 @@
415415
"get_backup_dir_url_failed": "获取备份目录地址失败",
416416
"get_backup_files_failed": "获取备份文件失败",
417417
"request_permission": "请求权限",
418-
"develop_mode_guide": "当前未启用“开发者模式”,脚本无法正常运行。<a href=\"https://docs.scriptcat.org/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉点击查看启用方法</a>",
418+
"develop_mode_guide": "当前未启用“开发者模式”,脚本无法正常运行。<a href=\"https://docs.scriptcat.org/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉点击查看启用方法</a>",
419419
"allow_user_script_guide": "当前未启用“允许运行用户脚本”,脚本无法正常运行。<a href=\"https://docs.scriptcat.org/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉点击查看启用方法</a>",
420420
"lower_version_browser_guide": "您的浏览器版本过低,脚本无法正常运行。<a href=\"https://docs.scriptcat.org/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉点击了解更多</a>",
421+
"click_to_reload": "👉点击重新加载",
421422
"confirm_leave_page": "当前正在编辑状态,跳转其它页面将会丢失当前内容,是否跳转?",
422423
"page_in_blacklist": "当前页面在黑名单中,无法使用脚本",
423424
"baidu_netdisk": "百度网盘",

src/locales/zh-TW/translation.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,9 +415,10 @@
415415
"get_backup_dir_url_failed": "取得備份目錄網址失敗",
416416
"get_backup_files_failed": "取得備份檔案失敗",
417417
"request_permission": "要求權限",
418-
"develop_mode_guide": "目前尚未啟用「開發者模式」,腳本無法正常執行。<a href=\"https://docs.scriptcat.org/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉點此查看啟用方式</a>",
418+
"develop_mode_guide": "目前尚未啟用「開發者模式」,腳本無法正常執行。<a href=\"https://docs.scriptcat.org/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉點此查看啟用方式</a>",
419419
"allow_user_script_guide": "目前尚未啟用「允許使用者指令碼」,腳本無法正常執行。<a href=\"https://docs.scriptcat.org/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉點此查看啟用方式</a>",
420420
"lower_version_browser_guide": "您的瀏覽器版本過舊,腳本無法正常執行。<a href=\"https://docs.scriptcat.org/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉點擊了解更多</a>",
421+
"click_to_reload": "👉點擊重新載入",
421422
"confirm_leave_page": "目前正在編輯狀態,跳轉其他頁面將會遺失目前內容,是否跳轉?",
422423
"page_in_blacklist": "目前頁面在黑名單中,無法使用腳本",
423424
"baidu_netdisk": "百度網盤",

src/pages/components/PopupWarnings/index.tsx

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,29 @@ function PopupWarnings({ isBlacklist }: PopupWarningsProps) {
123123
<Alert
124124
type="warning"
125125
content={
126-
<div
127-
dangerouslySetInnerHTML={{
128-
__html: warningMessageHTML,
129-
}}
130-
/>
126+
<div>
127+
<div
128+
dangerouslySetInnerHTML={{
129+
__html: warningMessageHTML,
130+
}}
131+
/>
132+
<a
133+
href="#reload"
134+
style={{ color: "var(--color-text-1)" }}
135+
onClick={(ev) => {
136+
// 点击了刷新链接
137+
chrome.runtime.reload();
138+
ev.preventDefault();
139+
try {
140+
window.close(); // 因为 Vivaldi 重启插件时不会关掉 popup
141+
} catch (e) {
142+
console.error(e);
143+
}
144+
}}
145+
>
146+
{t("click_to_reload")}
147+
</a>
148+
</div>
131149
}
132150
/>
133151
)}

0 commit comments

Comments
 (0)