【问题标题】:How to detect clicks on links in webview without changing something in website如何在不更改网站内容的情况下检测 webview 中链接的点击
【发布时间】:2016-06-09 17:06:50
【问题描述】:

我在片段中使用 webview,目前我只能在 webview 最初出现并且没有互联网连接时显示“没有互联网连接”的消息。我想在用户在 webview 中加载一个页面后断开互联网连接时显示该消息,或者连接出现其他问题。

【问题讨论】:

    标签: android android-webview


    【解决方案1】:

    我们可以根据 Android API 文档检测以下 HTML 元素。

    int     ANCHOR_TYPE     HitTestResult for hitting a HTML::a tag
    int     EDIT_TEXT_TYPE  HitTestResult for hitting an edit text area
    int     EMAIL_TYPE  HitTestResult for hitting an email address
    int     GEO_TYPE    HitTestResult for hitting a map address
    int     IMAGE_ANCHOR_TYPE   HitTestResult for hitting a HTML::a tag which contains HTML::img
    int     IMAGE_TYPE  HitTestResult for hitting an HTML::img tag
    int     PHONE_TYPE  HitTestResult for hitting a phone number
    int     SRC_ANCHOR_TYPE     HitTestResult for hitting a HTML::a tag with src=http
    int     SRC_IMAGE_ANCHOR_TYPE   HitTestResult for hitting a HTML::a tag with src=http + HTML::img
    int     UNKNOWN_TYPE    Default HitTestResult, where the target is unknown 
    

    我认为您将能够使用 WebView 的 setOnTouchListener 函数获取所有事件。

    WebView 有一个名为 HitTestResult 的内部类。 HitTestResult 类将帮助我们找到用户点击 WebView 时按下的 HTML 元素。

    HitTestResult 类只有两个方法。

    getExtra() :它返回字符串。字符串具有用户单击的 HTML 元素 getType() :它返回整数。它用于识别用户单击了哪个 HTML 元素。 你可以这样做:

    wv.setOnTouchListener(new View.OnTouchListener() {
    
            public boolean onTouch(View v, MotionEvent event) {
                WebView.HitTestResult hr = ((WebView)v).getHitTestResult();
    
                Log.i(TAG, "getExtra = "+ hr.getExtra() + "\t\t Type=" + hr.getType());
                return false;
            }
        });
    

    已编辑:参考完美答案:Detect click on HTML button through javascript in Android WebView

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-10
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      相关资源
      最近更新 更多