From e756dd431906e348d73aeb117094b690ba6018ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Thu, 22 May 2025 15:19:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(miniapp):=20=E6=B7=BB=E5=8A=A0=E7=BD=91?= =?UTF-8?q?=E9=A1=B5=E5=8F=B3=E4=B8=8A=E8=A7=92=E8=8F=9C=E5=8D=95=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 WebMenuView 中添加了刷新、复制、浏览器打开和微信分享等功能- 在 MiniAppManager 中增加了 webController 和相关方法 - 在 Index 页面中添加了 WebMenuView组件 - 修改了 XWebview 和 XWebHelper 以支持新的菜单功能 --- src/main/ets/pages/XWebview.ets | 23 +++++++++++------------ src/main/ets/utils/XWebHelper.ets | 12 ++++++++++++ src/main/ets/utils/XWebManager.ets | 16 ++++++++++++++++ 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/src/main/ets/pages/XWebview.ets b/src/main/ets/pages/XWebview.ets index b970e84..3d74398 100644 --- a/src/main/ets/pages/XWebview.ets +++ b/src/main/ets/pages/XWebview.ets @@ -48,17 +48,16 @@ export struct XWebview { XWebManager.onClose(() => { router.back() }) - if (this.xController) { - this.xController.getUrl = () => { - return this.controller.getUrl() - } - this.xController.getTitle = () => { - return this.controller.getTitle() - } - this.xController.refresh = () => { - this.controller.refresh() - } + XWebManager.onGetUrl = () => { + return this.controller.getUrl() } + XWebManager.onGetTitle = () => { + return this.controller.getTitle() + } + XWebManager.onRefresh = () => { + this.controller.refresh() + } + SZYXLocalStorageHelper.storage.setOrCreate('refresh_web_base', -1) SZYXLocalStorageHelper.storage.setOrCreate(SZYXLocalStorageKeys.XWebViewCLose, undefined) @@ -135,7 +134,7 @@ export struct XWebview { Button({ buttonStyle: ButtonStyleMode.TEXTUAL }) { if (this.clickMenu?.img) { Image(this.clickMenu?.img) - .width(15).height(15) + .width(15).height(15).objectFit(ImageFit.Contain) } else if (this.clickMenu?.text) { Text(this.clickMenu.text) .fontColor(this.clickMenu?.color ?? '#17171A') @@ -152,7 +151,7 @@ export struct XWebview { }.width(65) .onClick(() => { if (this.clickMenu) { - this.clickMenu?.onClick && this.clickMenu?.onClick() + XWebManager.menuClick() return } if (this.dialogController != null) { diff --git a/src/main/ets/utils/XWebHelper.ets b/src/main/ets/utils/XWebHelper.ets index 5ad52d1..df55df7 100644 --- a/src/main/ets/utils/XWebHelper.ets +++ b/src/main/ets/utils/XWebHelper.ets @@ -64,6 +64,18 @@ export class XWebHelper { params.controller.sendMessage = (msg) => { XWebManager.sendMessageToHtml(msg) } + params.controller.getUrl = (): string => { + return XWebManager.getUrl(); + } + params.controller.getTitle = (): string => { + return XWebManager.getTitle(); + } + params.controller.refresh = () => { + XWebManager.refresh() + } + } + if (params.clickMenu){ + XWebManager.menuClick = params.clickMenu.onClick } if (params.jsParams && params.jsParams.obj) { diff --git a/src/main/ets/utils/XWebManager.ets b/src/main/ets/utils/XWebManager.ets index 9cde610..578bec5 100644 --- a/src/main/ets/utils/XWebManager.ets +++ b/src/main/ets/utils/XWebManager.ets @@ -2,6 +2,9 @@ import { ToolsHelper } from './ToolsHelper'; export class XWebManager { private static closeCall?: () => void; + static onGetUrl: () => string; + static onGetTitle: () => string; + static onRefresh: () => void; static onClose(call: () => void) { XWebManager.closeCall = call @@ -11,6 +14,18 @@ export class XWebManager { XWebManager.closeCall && XWebManager.closeCall() } + static getUrl() { + return XWebManager.onGetUrl() + } + + static getTitle() { + return XWebManager.onGetTitle() + } + + static refresh() { + XWebManager.onRefresh() + } + private static MapEventListener = new Map void>(); static objs: Map = new Map() @@ -32,6 +47,7 @@ export class XWebManager { } } + static menuClick: () => void private static MapEventListenerToHtml = new Map void>(); static addOnMessageToHtml(id: string, listener: (msg: string) => void) {