HarmonyOS 鸿蒙Next Web如何触发重新加载

发布于 1周前 作者 yuanlaile 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Web如何触发重新加载

现在有个问题,就是Web进行加载一个h5页面,
https://xxx
当失败的时候。我们的ui上有个重新加载按钮。点击了之后
this.webViewController?.loadUrl(this.newsDetailController.url) 重新去加载上面的地址,但是不生效。不会重新加载。这是为啥?那我这个场景要怎么处理web的重新加载的场景?


更多关于HarmonyOS 鸿蒙Next Web如何触发重新加载的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

使用controller的refresh

index.ets
import web_webview from '@ohos.web.webview';
import business_error from '@ohos.base';

class WebObj {
  constructor() {
  }

  webTest(): string {
    console.log('Web test');
    return "Web test";
  }

  webString(): void {
    console.log('Web test toString');
  }
}

@Entry
@Component
struct WebComponent2 {
  controller: web_webview.WebviewController = new web_webview.WebviewController()
  @State webTestObj: WebObj = new WebObj();
  build() {
    Column() {
      Button('refresh')
        .onClick(() => {
          try {
            this.controller.refresh();
          } catch (error) {
            let e: business_error.BusinessError = error as business_error.BusinessError;
            console.error(`ErrorCode: ${e.code}, Message: ${e.message}`);
          }
        })
      Web({ src: $rawfile("index.html"), controller: this.controller })
        .javaScriptAccess(true)
        .onControllerAttached(() => {
          this.controller.loadUrl($rawfile("index.html"));
          this.controller.registerJavaScriptProxy(this.webTestObj, "objTestName", ["webTest", "webString"]);
        })
    }
  }
}
index.html
<!DOCTYPE html>
<html>
  <meta charset="utf-8">
  <body>
      <button type="button" onclick="htmlTest()">Click Me</button>
      <p id="demo"></p>
      <p id="webDemo"></p>
  </body>
  <script type="text/javascript">
  function htmlTest() {
    // This function call expects to return "Web test"
    let webStr = objTestName.webTest();
    document.getElementById("webDemo").innerHTML=webStr;
    console.log('objTestName.webTest result:'+ webStr)
  }
  </script>
</html>

更多关于HarmonyOS 鸿蒙Next Web如何触发重新加载的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,Next Web触发重新加载的操作可以通过以下几种方式实现:

  1. 代码刷新: 在开发过程中,可以通过编程方式直接刷新Web页面。这通常涉及到在前端JavaScript代码中调用location.reload()方法,或者在后端通过发送特定的响应头或指令来触发浏览器的重新加载行为。

  2. 配置更新: 如果Next Web项目依赖于某些配置文件,可以通过修改配置文件并通知系统重新加载配置,间接触发Web页面的重新加载。不过,这需要确保Web应用能够监听并响应配置的变化。

  3. 版本更新: 发布新版本时,可以通过更新Web应用的版本信息,并在用户访问时检测到版本更新,从而自动或提示用户进行页面重新加载以应用新版本。

  4. 系统事件: 监听系统级事件,如用户登录状态变化、网络状态变化等,根据这些事件触发Web页面的重新加载。

  5. 手动刷新: 在用户界面上提供刷新按钮,用户点击后通过JavaScript触发页面重新加载。

请注意,选择哪种方式取决于具体的应用场景和需求。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部