WdWebLocalComponent.ets 1.55 KB
import router from '@ohos.router';
import { BridgeUtil, BridgeWebViewControl } from 'wdJsBridge';
import { ResourceManager } from 'wdJsBridge/src/main/ets/utils/ResourceManager';

const TAG = 'WdWebLocalComponent';

@Component
export struct WdWebLocalComponent {
  private webviewControl: BridgeWebViewControl = new BridgeWebViewControl()
  backVisibility: boolean = false
  webResource: Resource = {} as Resource

  build() {
    Column() {
      Row() {
        Image($r("app.media.ic_back"))
          .width(44)
          .padding(13)
          .aspectRatio(1)
          .onClick(() => {
            router.back();
          })
      }.backgroundColor(Color.Black)
      .width('100%')
      .height(44)
      .visibility(this.backVisibility ? Visibility.Visible : Visibility.None)

      Web({ src: this.webResource, controller: this.webviewControl })
        .domStorageAccess(true)
        .databaseAccess(true)
        .javaScriptAccess(true)
        .onPageBegin((event) => {

          })
        .onLoadIntercept((event) => {
          let url: string = event.data.getRequestUrl().toString()
          url = url.replace("%(?![0-9a-fA-F]{2})", "%25")
            .replace("\\+", "%2B");
          url = decodeURIComponent(url)
          if (url.startsWith(BridgeUtil.YY_RETURN_DATA)) {
            this.webviewControl.handlerReturnData(url)
            return true
          }
          if (url.startsWith(BridgeUtil.YY_OVERRIDE_SCHEMA)) {
            this.webviewControl.flushMessageQueue()
            return true
          }
          return false
        })
    }
  }
}