JS交互与webView的工作原理浅析

本文深入探讨了Android中的WebView组件,包括WebViewClient和WebChromeClient的角色,以及它们如何协助加载网页和处理交互。详细阐述了JavaScript与客户端的交互方式,如JavascriptInterface、shouldOverrideUrlLoading、onConsoleMessage和onJsPrompt。此外,还介绍了JsBridge的概念、优点和原理,展示了使用JsBridge调用JS方法的流程,并提供了配置和使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JS交互与webView的工作原理浅析

webView是什么

WebView是android中一个非常实用的组件,它和safai、chrome一样都是基于webkit网页渲染引擎,可以通过加载html数据的方式便捷地展现软件的界面。

在WebView的设计中,不是什么任务都由WebView类完成的,辅助的类完全其它辅助性的工作,WebViewy主要负责解析、渲染。

WebViewClient

就是辅助WebView处理各种通知、请求事件的。

  • doUpdateVisitedHistory(WebView view, String url, boolean isReload) //(更新历史记录)

  • onFormResubmission(WebView view, Message dontResend, Message resend) //(应用程序重新请求网页数据)

  • onLoadResource(WebView view, String url) // 在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。

  • onPageStarted(WebView view, String url, Bitmap favicon) //这个事件就是开始载入页面调用的,通常我们可以在这设定一个loading的页面,告诉用户程序在等待网络响应。

  • onPageFinished(WebView view, String url) //在页面加载结束时调用。同样道理,我们知道一个页面载入完成,于是我们可以关闭loading 条,切换程序动作。

  • onReceivedError(WebView view, int errorCode, String description, String failingUrl)// (报告错误信息)

  • onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host,String realm)//(获取返回信息授权请求)

  • onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) //重写此方法可以让webview处理https请求。

  • onScaleChanged(WebView view, float oldScale, float newScale) // (WebView发生改变时调用)

  • onUnhandledKeyEvent(WebView view, KeyEvent event) //(Key事件未被加载时调用)

  • shouldOverrideKeyEvent(WebView view, KeyEvent event)//重写此方法才能够处理在浏览器中的按键事件。

  • shouldOverrideUrlLoading(WebView view, String url)
    //在点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边。这个函数我们可以做很多操作,比如我们读取到某些特殊的URL,于是就可以不打开地址,取消这个操作,进行预先定义的其他操作,这对一个程序是非常必要的。

WebChormeClient

是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等

  • onJsConfirm()//处理确认消息框

    使用确认消息框可向用户问一个“是-或-否”问题,并且用户可以选择单击“确定”按钮或者单击“取消”按钮。confirm 方法的返回值为 true 或 false。该消息框也是模式对话框:用户必须在响应该对话框(单击一个按钮)将其关闭后,才能进行下一步操作。

    var truthBeTold = window.confirm(“单击“确定”继续。单击“取消”停止。”);

    if (truthBeTold) {
    window.alert(“欢迎访问我们的 Web 页!”);
    }

    else {window.alert(“再见啦!”); }

  • onJsAlert()//处理警告消息框
    alert 方法有一个参数,即希望对用户显示的文本字符串。该字符串不是 HTML 格式。该消息框提供了一个“确定”按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值