From 1f76f64c23657f46859c79736eb3b572ef5b7f4e Mon Sep 17 00:00:00 2001 From: hymbz Date: Sat, 13 Jan 2024 18:38:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20:bug:=20=E4=BF=AE=E5=A4=8D=E4=B8=8E=20io?= =?UTF-8?q?s=20=E6=B2=B9=E7=8C=B4=E6=89=A9=E5=B1=95=E7=9A=84=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E6=80=A7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #136 --- .browserslistrc | 2 ++ metaHeader.ts | 14 +++++----- src/components/Manga/index.tsx | 1 + src/helper/import.ts | 47 ++++++++++++++++++---------------- 4 files changed, 36 insertions(+), 28 deletions(-) diff --git a/.browserslistrc b/.browserslistrc index 0ce03c98..4d4eb021 100644 --- a/.browserslistrc +++ b/.browserslistrc @@ -1,2 +1,4 @@ last 5 Chrome versions last 5 Firefox versions +last 5 Safari versions +last 5 iOS versions diff --git a/metaHeader.ts b/metaHeader.ts index 4dd9dc41..8f698f2e 100644 --- a/metaHeader.ts +++ b/metaHeader.ts @@ -31,14 +31,16 @@ const resourceList: Record = { 'https://greasyfork.org/scripts/467177-dmzjdecrypt/code/dmzjDecrypt.js?version=1207199', ], }; + const resource = { - prod: Object.fromEntries( - Object.entries(resourceList).map(([k, v]) => [k, v.at(0)]), - ), - dev: Object.fromEntries( - Object.entries(resourceList).map(([k, v]) => [k, v.at(-1)]), - ), + dev: {} as Record, + prod: {} as Record, }; +Object.entries(resourceList).forEach(([k, v]) => { + const name = k.replaceAll('/', '|'); + resource.prod[name] = v.at(0); + resource.dev[name] = v.at(-1); +}); /** 根据 index.ts 的注释获取支持站点列表 */ const getSupportSiteList = () => { diff --git a/src/components/Manga/index.tsx b/src/components/Manga/index.tsx index 2072b9de..ffa54551 100644 --- a/src/components/Manga/index.tsx +++ b/src/components/Manga/index.tsx @@ -93,6 +93,7 @@ export const Manga: Component = (props) => { oncapture:keydown={handleKeyDown} oncapture:keypress={stopPropagation} oncapture:keyup={stopPropagation} + on:click={stopPropagation} data-mobile={boolDataVal(store.isMobile)} data-scroll-mode={boolDataVal(store.option.scrollMode)} > diff --git a/src/helper/import.ts b/src/helper/import.ts index d085c414..0033ef96 100644 --- a/src/helper/import.ts +++ b/src/helper/import.ts @@ -31,34 +31,37 @@ const evalCode = (code: string) => { * @param name \@resource 引用的资源名 */ const selfImportSync = (name: string) => { - const code = name !== 'main' ? GM_getResourceText(name) : inject('main'); + const code = + name !== 'main' + ? GM_getResourceText(name.replaceAll('/', '|')) + : inject('main'); if (!code) throw new Error(`外部模块 ${name} 未在 @Resource 中声明`); // 通过提供 cjs 环境的变量来兼容 umd 模块加载器 // 将模块导出变量放到 crsLib 对象里,防止污染全局作用域和网站自身的模块产生冲突 const runCode = ` - window['${tempName}']['${name}'] = {}; - ${isDevMode ? `console.time('导入 ${name}');` : ''} - (function (process, require, exports, module, ${gmApiList.join(', ')}) { - ${code} - })( - window['${tempName}'].process, - window['${tempName}'].require, - window['${tempName}']['${name}'], - { - set exports(value) { - window['${tempName}']['${name}'] = value; - }, - get exports() { - return window['${tempName}']['${name}']; - }, + window['${tempName}']['${name}'] = {}; + ${isDevMode ? `console.time('导入 ${name}');` : ''} + (function (process, require, exports, module, ${gmApiList.join(', ')}) { + ${code} + })( + window['${tempName}'].process, + window['${tempName}'].require, + window['${tempName}']['${name}'], + { + set exports(value) { + window['${tempName}']['${name}'] = value; }, - ${gmApiList - .map((apiName) => `window['${tempName}'].${apiName}`) - .join(', ')} - ); - ${isDevMode ? `console.timeEnd('导入 ${name}');` : ''} - `; + get exports() { + return window['${tempName}']['${name}']; + }, + }, + ${gmApiList + .map((apiName) => `window['${tempName}'].${apiName}`) + .join(', ')} + ); + ${isDevMode ? `console.timeEnd('导入 ${name}');` : ''} + `; Reflect.deleteProperty(unsafeWindow, tempName); unsafeWindow[tempName] = crsLib;