HarmonyOS webview中,如何通过函数调用动态加载url?

例如:

@Entry
@Component
struct WebComponent {
  controller: webview.WebviewController = new webview.WebviewController();
  build() {
    Column() {
      Button('loadUrl')
        .onClick(() => {
          // 需要加载的URL是string类型。
          this.controller.loadUrl('www.myURL.com');
        }
    })
    Web({ src: 'www.huawei.com', controller: this.controller })
  }
}
}

如果需要在另一个类的函数setWebURL()中,直接使web组件加载某个url,除了用emitter通知还有更合适的方式吗

HarmonyOS
7天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

1.改变web组件的加载路径,需要调用this.controller.loadUrl(‘www.huawei.com’);,这个方法要保证web组件加载完成之后。一般是把controller的方法写在web组件的生命周期中

2.另外一个类要操作web组件,建议在这个类中的成员变量中 保存这个 WebComponent 对象,才能通过方法设置这个成员对象中的web对象的url

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-event-sequence-V5

可以再创建一个webComponent,在外部创建webController,通过webController再通过loadUrl改变url地址

//web.ets
import { webview } from '@kit.ArkWeb';
@Component
export struct webComponent {
  @Prop url: string = ''
  controller: webview.WebviewController | undefined

  build() {
    Web({ src:this.url, controller: this.controller })

  }
}

//page.ets
import { webview } from '@kit.ArkWeb';
import { webComponent } from './Web';
@Entry
@Component
struct Page1 {
  @State message: string = 'Hello World';
  private webviewController: webview.WebviewController = new webview.WebviewController();
  build() {
    Column() {

      Button('改变url').onClick(()=>{
        this.webviewController.loadUrl('https://www.huawei.com/')
      })
      webComponent({
        url: 'https://www.myURL.com/',
        controller: this.webviewController,
      })
    }
    .width('100%')
    .height('100%')

  }
}
分享
微博
QQ
微信
回复
7天前
相关问题
HarmonyOS webview加载url白屏
115浏览 • 1回复 待解决
HarmonyOS WebView加载url无法滚动
164浏览 • 1回复 待解决
通过webView修改iframe的URL
998浏览 • 1回复 待解决
鸿蒙Webview加载Url,alipay无法返回
9347浏览 • 1回复 待解决
HarmonyOS 如何调用函数
68浏览 • 1回复 待解决
如何HarmonyOS实现动态加载模块?
278浏览 • 1回复 待解决
如何在ArkTS动态加载so
676浏览 • 1回复 待解决
webview加载url后页面一片空白,无报错
2890浏览 • 1回复 待解决