如何辨别webview页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何辨别webview页面相关的知识,希望对你有一定的参考价值。

参考技术A

我们常说的客户端里的i版页面或H5页面,是通过webview控件展示的网页。一个native页面可以有多个webview入口,点击webview入口,打开的就是i版页面。我们可以从i版页面跳转到另一个i版页面,也可以跳转到native页面,因此,如果流程中融合了native页面和i版,如何加以区分并针对性地设计是设计师遇到的一个问题。

iosandroid两个平台的webview的情况不完全一样,以下会分开举例。
iOS:
1.看导航栏。原native页面返回旁无返回文字,打开i版左上角新出现“返回”两字(第一个i版页面是“返回”,第二个页面及往后的多了“关闭”,这是未经处理的i版状况)

Android:
1.看导航栏。
一种导航模式:打开i版返回按钮变成关闭按钮,下图1;
另一种导航模式:右侧有“关闭”,一定是i版(因为Android没有“返回”了,所以有“关闭”的前一页也是i版),下图2和3

以上只从能观察到的表象去对webview页面做一个区分,不涉及两个平台不同逻辑上的说明。webview页面目前还有很多体验上的问题,后续会总结出一系列的解决方案。

如何在WebView开始加载新页面时收到通知?

我知道如何在加载网页时收到通知,但有没有办法知道它何时开始加载从原始网页链接启动的新网页?

我想要它的原因是每当页面开始加载时使ProgressBar可见,并在它完成时使其不可见。

更新:正如我所说,我知道如何在完成加载网页时收到通知。我现在要问的是,是否可以知道新页面何时开始加载页面。虽然从链接我发现onPageStarted,它的工作原理。

答案

请检查以下内容

 webView.setWebViewClient(new WebViewClient() {      


        //If you will not use this method url links are opeen in new brower not in webview
        public boolean shouldOverrideUrlLoading(WebView view, String url) {              
            view.loadUrl(url);
            return true;
        }


        public void onLoadResource (WebView view, String url) {
          //Show loader on url load
        }

        public void onPageFinished(WebView view, String url) {
           //cancel loader complted
        }

    }); 

     // Set Javascript enabled on webview  
    webView.getSettings().setJavaScriptEnabled(true); 
另一答案

要听一个开始加载的网页,你应该覆盖onPageStarted,听取整理你应该覆盖onPageFinished并让它更完整,听onReceivedError的错误

webView.setWebViewClient(new WebViewClient() {  

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon){
            super.onPageStarted(view, url, favicon);

            // runs when a page starts loading
            progressBar.setVisibility(View.VISIBLE);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);

            // page finishes loading
            progressBar.setVisibility(View.GONE);
        }

        @Override
        public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
            super.onReceivedError(view, request, error);

            // runs when there's a failure in loading page
            progressBar.setVisibility(View.GONE);
            Toast.makeText(context, "Failure on loading web page", Toast.LENGTH_SHORT).show();
        }
}); 

以上是关于如何辨别webview页面的主要内容,如果未能解决你的问题,请参考以下文章

判断webview页面是如何加载的?

如何获取在webview中显示的html页面的整个内容文本

在webview中完成工作后如何重定向到页面?

如何监听webview加载完成这个事件

安卓webview加载 h5页面 奔溃bug

如何从 WebView 获取网页内容?