文档管理中心

请问webview开发过程中, H5中调用的 window.prompt , 在应用端要怎么接收到对应的事件呢?

是这样去监听吗?

收起
自动换行
深色代码主题
复制
webView.addJsCallback("prompt", callback);
点赞
1
收藏
回复
11
分享
举报
浏览770 发布于2021-12-14 02:53未知归属地
全部评论
最多点赞
最新发布
最早发布
楼主你好,可以使用BrowserAgent的onJsTextInput方法。
收起
自动换行
深色代码主题
复制

webView.setBrowserAgent(new BrowserAgent(this) {    @Override    public boolean onJsTextInput(WebView webView, String url, String message, String defaultInput, JsTextInputResult result) {        return super.onJsTextInput(webView, url, message, defaultInput, result);    }});

具体可以参考:

https://developer.harmonyos.com/cn/docs/documentation/doc-references/browseragent-0000001120951629

1
5楼回复于2021-12-24 09:31 未知归属地
  • 长江后浪
    感谢!, 您说的这个方法可用, 非常谢谢!
    2021-12-28 03:27 未知归属地

你好,你可以参考以下代码

webview.setBrowserAgent(new BrowserAgent(this) {

           @Override

           public boolean onJsMessageShow(WebView webView, String url, String message, boolean isAlert, JsMessageResult result) {             

               result.confirm();

               return true;

           }

       });

       //接收window.JsCallJava.call传递的数据

       webview.addJsCallback(JS_NAME, new JsCallback() {

           @Override

           public String onCallback(String s) {

               textName.setText(s);

               return "jsResult";

           }

       });

html

function sendData() {

               alert("这个是来自本地Web页面的消息1");

                window.JsCallJava.call("这个是来自本地Web页面的消息2");

           }

展开全部
1
4楼回复于2021-12-16 01:10 未知归属地
  • 长江后浪
    您好, 我这边主要想兼容以前Android 项目的前端调用 , 所以 html中的调用还是发安卓的 window.prompt(param1, param2); 这种方式, 我想知道在鸿蒙的java代码中如何可以获取这个事件
    2021-12-24 01:30 未知归属地
我的意思是, 我们的H5界面里面, 有一段JS代码是:window.prompt(param1, param2); 这段代码在安卓里面是通过WebChromeClient的onJsPrompt 可以拦截到这个prompt事件, 那么对于鸿蒙应用来说, 我得通过哪个事件来获取到这个prompt事件呢?
3楼回复于2021-12-14 06:49 未知归属地
收起
自动换行
深色代码主题
复制
addJsCallback 是 注册一个Object提供给H5调用的。

比如你写的这个,那么在js里面,通过 window.promt.call() 去调用。

4
2楼回复于2021-12-14 05:54 未知归属地
  • 长江后浪
    你好,我的意思是, 我们的H5界面里面, 有一段JS代码是:window.prompt(param1, param2); 这段代码在安卓里面是通过WebChromeClient的onJsPrompt 可以拦截到这个prompt事件, 那么对于鸿蒙应用来说, 我得通过哪个事件来获取到这个prompt事件呢?
    2021-12-14 06:49 未知归属地
  • CrossRun回复长江后浪
    参考下,ohos.agp.components.webengine.BrowserAgent.onJsMessageShow()
    2021-12-14 13:55 未知归属地
  • CrossRun回复CrossRun
    WebView.setBrowserAgent(new BrowserAgent(){});
    2021-12-14 13:55 未知归属地
  • 展开剩余1条回复
欢迎开发小伙伴们进来帮帮楼主
1楼回复于2021-12-14 03:00 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。