HarmonyOS Web组件中的网页触发下载时提示:download_handler_for_browser_context not set

import web_webview from '@ohos.web.webview'; 
 
@Component 
export struct CleanWebComponent { 
  @State title: string = ''; 
  webviewController: web_webview.WebviewController = new web_webview.WebviewController(); 
  onTitleReceive = (title: string) => { 
    this.title = title 
  } 
 
  build() { 
    NavDestination() { 
 
      Web({ src: "index", controller: this.webviewController }) 
        .fileAccess(true) 
        .domStorageAccess(true) 
        .mixedMode(MixedMode.All) 
        .databaseAccess(true) 
        .geolocationAccess(true) 
        .javaScriptAccess(true) 
        .zoomAccess(false) 
        .horizontalScrollBarAccess(false) 
        .onTitleReceive((event) => { 
          if (event?.title) { 
            this.onTitleReceive(event?.title ?? '') 
          } 
        }) 
    } 
    .title(this.title) 
  } 
}
HarmonyOS
2024-09-06 09:42:09
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

需要使用setDownloadDelegate.ets,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-download-0000001820999905-V5

例如:

Web({ src:"xxx", controller: this.controller1 }) 
  .domStorageAccess(true) 
  .onControllerAttached(() => { 
    // console.log("testTag - test"); 
    try { 
      this.delegate.onBeforeDownload((webDownloadItem: web_webview.WebDownloadItem) => { 
        console.log("will start a download."); 
        // 传入一个下载路径,并开始下载。 
        // 如果传入一个不存在的路径,则会下载到默认/data/storage/el2/base/cache/web/目录。 
        webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 
        console.log(webDownloadItem.getSuggestedFileName()) 
      }) 
      this.delegate.onDownloadUpdated((webDownloadItem: web_webview.WebDownloadItem) => { 
        // 下载任务的唯一标识。 
        console.log("download update guid1: " + webDownloadItem.getGuid()); 
        // 下载的进度。 
        console.log("download update guid2: " + webDownloadItem.getPercentComplete()); 
        // 当前的下载速度。 
        console.log("download update speed: " + webDownloadItem.getCurrentSpeed()) 
      }) 
      this.delegate.onDownloadFailed((webDownloadItem: web_webview.WebDownloadItem) => { 
        console.log("download failed guid1: " + webDownloadItem.getGuid()); 
        // 下载任务失败的错误码。 
        console.log("download failed guid2: " + webDownloadItem.getLastErrorCode()); 
      }) 
      this.delegate.onDownloadFinish((webDownloadItem: web_webview.WebDownloadItem) => { 
        console.log("download finish guid: " + webDownloadItem.getGuid());
分享
微博
QQ
微信
回复
2024-09-06 15:36:23
相关问题
Stack组件如何触发下层事件控件
140浏览 • 1回复 待解决
HarmonyOS 下载报错Download File Path Valid
569浏览 • 1回复 待解决
Web组件网页图片长按出现蒙层
728浏览 • 1回复 待解决
怎样实现Web组件下载能力?
312浏览 • 1回复 待解决
使用Web组件加载网页,显示空白。
332浏览 • 1回复 待解决
HarmonyOS Web加载网页白屏
362浏览 • 1回复 待解决
使用Web组件下载能力Demo
268浏览 • 1回复 待解决
request.download()方法支持后台下载么?
4095浏览 • 1回复 待解决
关于 web 网页打开速度
59浏览 • 1回复 待解决