HarmonyOS javaScriptProxy注册客户端方法,但是html页面调用不起来

//自定义类
class Window{
  // iceapi:iceApi = new iceApi()
  close(){
    console.info('window close')
    router.back()
  }
}

//使用的地方
@State window:Window = new Window()

  .javaScriptProxy({
    object:this.window,
    name:"window",
    methodList:["close"],
    controller:this.controller
  })

//前端代码:
function close(){
  window.close();
}

但是应用端close方法不执行

HarmonyOS
2024-12-25 14:46:28
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

使用的window,close在js中存在关键字产生了冲突。

可以尝试下如下代码:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { router } from '@kit.ArkUI';

class Window {
  close() {
    console.log('window close')
    router.back()
  }
}

@Entry
@Component
struct WebComponent {
  controller: webview.WebviewController = new webview.WebviewController();
  window: Window = new Window();

  build() {
    Column() {
      Web({ src: $rawfile("index.html"), controller: this.controller })
        .javaScriptAccess(true)
        .javaScriptProxy({
          object: this.window,
          name: "TestWindow",
          methodList: ["close"],
          controller: this.controller,
        })
    }
  }
}


//index.html
<!DOCTYPE html>
  <html>
  <head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0" charset="utf-8">
  </head>
  <body>
  <div>
  <button onclick="close2()">点击</button>
  </div>
  <script>
  function close2() {
    TestWindow.close() ;
  }
  </script>
  </body>
  </html>
分享
微博
QQ
微信
回复
2024-12-25 17:23:22
相关问题
golang redis客户端连接状态
2862浏览 • 1回复 待解决
mysql客户端怎么开启预编译?
3378浏览 • 1回复 待解决
https如何设置ca证书和客户端证书
740浏览 • 1回复 待解决
有哪些好用的免费的MongoDB客户端
4035浏览 • 1回复 待解决
客户端开发无法获取code
553浏览 • 1回复 待解决
HarmonyOS 客户端拖拽效果如何实现?
300浏览 • 1回复 待解决