HarmonyOS 鸿蒙Next Web调用原生端方法,点击无效,交互失败(模拟器、HUAWEI MATE 30 5G)

HarmonyOS 鸿蒙Next Web调用原生端方法,点击无效,交互失败(模拟器、HUAWEI MATE 30 5G) 我已文档测试Web与原生间互相调用进行交互的方法,在模拟器和HUAWEI MATE 30 真机上面,点击事件都是无法调用的。

cke_3159.png


更多关于HarmonyOS 鸿蒙Next Web调用原生端方法,点击无效,交互失败(模拟器、HUAWEI MATE 30 5G)的实战教程也可以访问 https://www.itying.com/category-93-b0.html

9 回复

你是想问怎么监听h5中的alert?

@Entry
@Component
struct WebComponent {
  controller:WebController = new WebController();
  build() {
    Column() {
      Web({ src:'www.example.com', controller:this.controller })
        .onAlert((event) => {
          return true;
        })
    }
  }
}

更多关于HarmonyOS 鸿蒙Next Web调用原生端方法,点击无效,交互失败(模拟器、HUAWEI MATE 30 5G)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我是说,同样的.html文件,我在浏览器上运行,点击事件是有效的,能够出来alert()弹窗,但是在ArkTS的Web中运行,是无效点击。使用的是ArkTS模拟器和HUAWEI mate 30, API 9、DevEco Studio 3.1.1 Release,

模拟器不能用来测Web的功能,好多模拟器上的效果和真机都不一样。
我这边现在开发app 和web相关的都拿真机测。

哪怕是我使用的他官网的demo:ArkTS与H5的交互(ArkTS)
我在模拟器上面运行时,点击事件都是无效的。

methodList对应你html中的funcion name

callNativeMethod()改成test()

callNativeMethod2()改成toString()

callNativeMethod() 和 callNativeMethod2() 是我在试用调用原生无效后,在JS内定义的,点击后出提示弹窗,像下图,在浏览器中点击,是生效的,在ArkTS的Web中,点击无效。

点击按钮无反应,没有提示弹窗

在HarmonyOS中,Web调用原生端方法无效或交互失败,可能涉及以下几个原因:

  1. 权限配置问题:确保在config.json中正确配置了ohos.permission.INTERNET权限,以及ohos.permission.INTERNET权限是否已被授予。

  2. Web和原生端的接口定义不一致:检查Web端和原生端的接口定义是否一致,包括方法名、参数类型和返回值类型。

  3. WebView配置问题:确保WebView已正确配置,包括启用JavaScript支持和设置WebViewClient

  4. 原生端方法未正确注册:确保原生端的方法已通过WebViewaddJavascriptInterface方法正确注册。

  5. 模拟器或设备兼容性问题:在模拟器和真机上进行测试,确保问题不是由于模拟器或设备的兼容性问题引起的。

  6. 日志调试:通过查看日志,检查是否有错误信息或异常抛出,以帮助定位问题。

  7. 代码示例

    // Web端调用原生方法
    window.原生方法名();
    
    // 原生端注册方法
    webView.addJavascriptInterface(new Object() {
        @JavascriptInterface
        public void 原生方法名() {
            // 方法实现
        }
    }, "原生对象名");
    
  8. 版本兼容性:确保使用的HarmonyOS版本和WebView版本兼容。

通过以上步骤,可以排查和解决Web调用原生端方法无效或交互失败的问题。

回到顶部