web页面栈不正确,如何处理?


web页面栈不正确,如何处理?-鸿蒙开发者社区

web页面栈不正确,如何处理?-鸿蒙开发者社区

见截图,加上this.vm.jsBridge.registerJavaScriptProxy()之后,getBackForwardEntries不正常。

HarmonyOS
2024-11-06 11:46:13
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

请先registerJavaScriptProxy,再loadUrl:

import { webview } from '@kit.ArkWeb'; 
import { bundleManager } from '@kit.AbilityKit'; 
 
 
class TestObj { 
  constructor() { 
  } 
 
  test(testStr:string): string { 
    console.log('Web Component str' + testStr); 
    return testStr.length + ''; 
  } 
} 
 
@Entry 
@Component 
struct test { 
  @State message: string = 'Hello World'; 
  controller: webview.WebviewController = new webview.WebviewController(); 
  @State testObjtest: TestObj = new TestObj(); 
  @State historySize: number = 1; 
 
  aboutToAppear(): void { 
    webview.WebviewController.setWebDebuggingAccess(true) 
  } 
 
  setUA(): Promise<void> { 
    return new Promise((resolve, reject) => { 
      try { 
        let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION; 
        bundleManager.getBundleInfoForSelf(bundleFlags, (err,data) => { 
          if (err) { 
            console.error(`getBundleInfoForSelf failed: ${err.message}`); 
            reject(); 
          } else { 
            let newAgent = "Mozilla/5.0 (Phone; Android; OpenHarmony 4.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/4.1.6.1 Mobile"; 
            this.controller.setCustomUserAgent(newAgent) 
            resolve(); 
          } 
        }) 
      } catch (e) { 
        console.log(e) 
        reject(); 
      } 
    }) 
  } 
 
  build() { 
    Column() { 
      Row() { 
        Button('HistorySize').onClick(() => { 
          this.historySize = this.controller.getBackForwardEntries().size; 
        }) 
        Text('historySize: ' + this.historySize) 
      } 
      Row() { 
        Web({ src: '', controller: this.controller }) 
          .onControllerAttached(() => { 
            this.setUA().then(() => { 
              // 先注册proxy并refresh 
              this.controller.registerJavaScriptProxy(this.testObjtest, "objName", ["test"]); 
              this.controller.refresh(); 
              // 再loadUrl 
              this.controller.loadUrl('https://developer.huawei.com/cn/') 
            }) 
          }) 
      } 
      .height('100%') 
      .width('100%') 
    } 
    .height('100%') 
    .width('100%') 
  } 
} 
分享
微博
QQ
微信
回复
2024-11-06 16:09:35
相关问题
使用lineHeight行间距展示不正确
294浏览 • 1回复 待解决
如何处理tabs嵌套web滑动场景
546浏览 • 1回复 待解决
有谁知道web拦截如何处理文件
889浏览 • 1回复 待解决
Web如何正确设置userAgent?
831浏览 • 1回复 待解决