From 4b291396bc788ac7e9e68074a5f7027c56d74c75 Mon Sep 17 00:00:00 2001 From: lanterngamescn Date: Sat, 27 Jun 2026 00:48:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E7=90=86=E6=8E=92=E6=9F=A5=E8=BF=87?= =?UTF-8?q?=E7=A8=8B=E7=9A=84=E9=9D=9E=E5=BF=85=E9=9C=80=E6=94=B9=E5=8A=A8?= =?UTF-8?q?=EF=BC=9A=E7=A7=BB=E9=99=A4=20onActive=20=E4=BF=9D=E6=B4=BB?= =?UTF-8?q?=E4=B8=8E=20H5=20console=20=E8=B0=83=E8=AF=95=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 定位 touch→mouse 时序为真因后,清理排查途中加入但最终非必需的代码: - 移除 onActive/notifyShown(基于"ArkWeb 未激活态暂停动画"的误判;实测页面本就 active/visible,无需)。 含 WebSlot.notifyShown + setup 调用 + BridgeGameContainer NavDestination.onShown。 - 移除 onConsole H5 console→hilog 调试转发(三容器 + webConsoleOn 字段 + logWebConsole + 多余 AppEnv 引入)。 保留:touch→mouse shim(真正修复)、expandSafeArea(白边修复)、debug 版 setWebDebuggingAccess。 (合成保活、SYNC_RENDER 已于 0caf385 移除。)devecocli build 通过、真机正常启动。 Co-Authored-By: Claude Opus 4.8 (1M context) --- .../main/ets/pages/BridgeGameContainer.ets | 21 ------------------- .../main/ets/pages/GenericWebContainer.ets | 12 +---------- entry/src/main/ets/web/WebSlot.ets | 17 --------------- 3 files changed, 1 insertion(+), 49 deletions(-) diff --git a/entry/src/main/ets/pages/BridgeGameContainer.ets b/entry/src/main/ets/pages/BridgeGameContainer.ets index 61d9bf0..dacead5 100644 --- a/entry/src/main/ets/pages/BridgeGameContainer.ets +++ b/entry/src/main/ets/pages/BridgeGameContainer.ets @@ -39,8 +39,6 @@ export struct BridgeGameContainer { @State private sharePanelVisible: boolean = false; /** 当前分享面板的一次性回投事件名(用户选定平台后 emit 回 ShareProvider)。 */ private shareResultEvent: string = ''; - /** H5 console 转发开关(构造期固化为编译期 DEBUG 常量;release 下 onConsole 仅一次字段读取即返回,零日志开销)。 */ - private readonly webConsoleOn: boolean = AppEnv.isDebug(); aboutToAppear(): void { if (AppEnv.isDebug()) { @@ -205,15 +203,6 @@ export struct BridgeGameContainer { return this.params.entryUrl !== '' ? this.params.entryUrl : $rawfile('test_echo.html'); } - /** 转发 H5 console 到 hilog(debug 限定,带角色/级别/来源行,便于排查 H5 报错)。tag=WebConsole。 */ - private logWebConsole(role: string, event: OnConsoleEvent): void { - if (!this.webConsoleOn) { - return; - } - const m: ConsoleMessage = event.message; - Logger.tag('WebConsole').i(`[${role}][lv${m.getMessageLevel()}] ${m.getMessage()} @${m.getSourceId()}:${m.getLineNumber()}`); - } - build() { NavDestination() { Stack() { @@ -235,10 +224,6 @@ export struct BridgeGameContainer { this.slotL?.onFirstProgress(); } }) - .onConsole((event: OnConsoleEvent) => { - this.logWebConsole('lobby', event); - return false; - }) .onRenderExited((event: OnRenderExitedEvent) => this.slotL?.onRenderExited(event.renderExitReason)) // 子游戏 Web(临时,subgameUrl 非空时存在) @@ -258,10 +243,6 @@ export struct BridgeGameContainer { this.slotS?.onFirstProgress(); } }) - .onConsole((event: OnConsoleEvent) => { - this.logWebConsole('subgame', event); - return false; - }) .onRenderExited((event: OnRenderExitedEvent) => this.slotS?.onRenderExited(event.renderExitReason)) } @@ -273,8 +254,6 @@ export struct BridgeGameContainer { .width('100%').height('100%') } .hideTitleBar(true) - // 页面(重新)可见时激活当前槽的 Web 引擎,恢复 CSS 动画/rAF(首次进大厅 + 从通用网页返回) - .onShown(() => this.activeSlot()?.notifyShown()) .onBackPressed(() => { // 分享面板打开时,返回键关闭面板并按取消回投(对齐 Android 点空白关闭) if (this.sharePanelVisible) { diff --git a/entry/src/main/ets/pages/GenericWebContainer.ets b/entry/src/main/ets/pages/GenericWebContainer.ets index 9611f9d..f8d174f 100644 --- a/entry/src/main/ets/pages/GenericWebContainer.ets +++ b/entry/src/main/ets/pages/GenericWebContainer.ets @@ -3,7 +3,7 @@ import { common, Want } from '@kit.AbilityKit'; import { window } from '@kit.ArkUI'; import { BusinessError } from '@kit.BasicServicesKit'; import { SettingsProxy } from 'feature_bridge'; -import { AppEnv, Logger } from 'common'; +import { Logger } from 'common'; import { GenericWebParams, GenericWebResult } from '../routes/AppRoutes'; /** @@ -24,8 +24,6 @@ export struct GenericWebContainer { private loaded: boolean = false; private exitDialog: boolean = false; private backToH5: boolean = false; - /** H5 console 转发开关(构造期固化 DEBUG;release 下 onConsole 仅字段读取即返回)。 */ - private readonly webConsoleOn: boolean = AppEnv.isDebug(); aboutToAppear(): void { // settings 6 方法委托容器能力(§11.3) @@ -94,14 +92,6 @@ export struct GenericWebContainer { this.controller.runJavaScript(`getWebdata(${this.jsArg(this.params.data)})`); } }) - .onConsole((event: OnConsoleEvent) => { - // 转发 H5 console 到 hilog(debug 限定,tag=WebConsole);release 仅字段读取即返回 - if (this.webConsoleOn) { - const m: ConsoleMessage = event.message; - Logger.tag('WebConsole').i(`[genericweb][lv${m.getMessageLevel()}] ${m.getMessage()} @${m.getSourceId()}:${m.getLineNumber()}`); - } - return false; - }) } .hideTitleBar(true) .onBackPressed(() => { diff --git a/entry/src/main/ets/web/WebSlot.ets b/entry/src/main/ets/web/WebSlot.ets index 6c3f05d..baecd42 100644 --- a/entry/src/main/ets/web/WebSlot.ets +++ b/entry/src/main/ets/web/WebSlot.ets @@ -74,23 +74,6 @@ export class WebSlot { } catch (e) { WebSlot.log.e(`[${this.role}] capability registration failed (bridge usable): ${(e as Error).message}`); } - // 激活槽(大厅/子游戏)首次建好即通知 Web 引擎进入激活态——否则 ArkWeb 默认未激活态会 - // 暂停 CSS 动画/requestAnimationFrame(官方:onInactive 暂停动画),表现为"画面在但缩放等动画不播放"。 - if (this.active) { - this.notifyShown(); - } - } - - /** 页面可见时确保 Web 引擎处于激活态,恢复 CSS 动画/rAF(与 NavDestination onShown 配合,幂等)。 */ - notifyShown(): void { - if (this.disposed) { - return; - } - try { - this.controller.onActive(); - } catch (e) { - WebSlot.log.w(`[${this.role}] onActive(notifyShown) failed: ${(e as BusinessError).message}`); - } } onLoadIntercept(url: string): boolean {