setCustomUserAgent设置后与web页面的跳转时序是web跳转后才设置UserAgent,这就导致页面跳转了但新agent关联的页面堆栈数仍只有一个,webviewController.accessBackward()总是返回false。参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5\#setcustomuseragent10建议在setCustomUserAgent方法后,调用loadUrl,且使用onControllerAttached替换onLoadIntercept进行applyCustomUserAgent方法的调用,参考demo如下:import { webview } from '@kit.ArkWeb' @Entry @Component export struct PageWeb { readonly webUrl: string | Resource = 'www.myURL.com' readonly controller: WebviewController = new webview.WebviewController() userAgentAlreadySet: boolean = false @State customUserAgent?: string = undefined build() { if (this.customUserAgent){ Web({ src:'', controller: this.controller }) .size({ width: '100%', height: '100%' }) .javaScriptAccess(true) .fileAccess(true) .domStorageAccess(true) .databaseAccess(true) .mixedMode(MixedMode.Compatible) .zoomAccess(true) .geolocationAccess(true) .multiWindowAccess(false) .overviewModeAccess(false) .darkMode(WebDarkMode.Auto) .pinchSmooth(true) .onControllerAttached(() => { this.applyCustomUserAgent() })} } aboutToAppear(): void { // 模拟异步构建 customUserAgent 过程 setTimeout(() => this.customUserAgent = 'ua/value', 200) } applyCustomUserAgent(): void { if (this.userAgentAlreadySet || !this.customUserAgent) return this.userAgentAlreadySet = true let defaultUserAgent = this.controller.getUserAgent() this.controller.setCustomUserAgent(defaultUserAgent + ' ' + this.customUserAgent) this.controller.loadUrl(this.webUrl) } onBackPress(): boolean | void { if (this.controller.accessBackward()) { this.controller.backward() return true } } }
setCustomUserAgent设置后与web页面的跳转时序是web跳转后才设置UserAgent,这就导致页面跳转了但新agent关联的页面堆栈数仍只有一个,webviewController.accessBackward()总是返回false。
参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5\#setcustomuseragent10
建议在setCustomUserAgent方法后,调用loadUrl,且使用onControllerAttached替换onLoadIntercept进行applyCustomUserAgent方法的调用,参考demo如下: