如何在Webview中检测按钮和视频元素的点击?

3
我可以使用WebView.HitTestResult在webview.onTouch事件中检测一些事件,如http://developer.android.com/reference/android/webkit/WebView.HitTestResult.html#constants。我想要实现的是,当用户在Webivew中单击任何位置时,如果它没有开始像播放/暂停视频、重定向某个页面等任何操作,则切换同一活动中Footer LinearLayout的可见性。但我无法捕捉一些操作,例如单击按钮、播放/暂停视频元素的按钮等。那么我该如何检测这些操作呢?
   webView.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            WebView.HitTestResult hr = ((WebView) v).getHitTestResult();

            if (hr != null) {
                Log.w("webView.onTouch", "getExtra = " + hr.getExtra() + "\t\t Type=" + hr.getType());
            } else {
                Log.w("webView.onTouch", event.toString());
            }

            return false;
        }
    });
1个回答

0

你必须至少获取元素名称、ID、类或任何属性,以设置onClick属性。如果你知道它,那么使用JavaScript添加onClick属性就非常容易了。

Webview webview;
.....

你的代码或者其他内容
... webview.addJavascriptInterface(new javasctiptinterface(),"javasciptinterfaceCall");

  webview.setWebViewClient(new WebViewClient(){
    public void onPageFinished(WebView view, String url) {

            view.loadUrl("javascript:document.getElementsByName('Element_NameAttribute_Value')[0].setAttribute('onClick','javascriptinterfaceCall.clicked()');");




        }
   });


    Class javasctiptinterface{
@javascriptinterface
public void clicked(){
... Your Code ......
}

谢谢你,但这个应用程序是一种阅读书籍的方式,所以我有大约200个包含不同内容的HTML页面。所以我不能将这个解决方案应用到我的情况中。 - gturedi
也许你可以尝试一下...只是一个建议:如果你不知道元素属性名称...那么你可以检查它的模式,比如哪个类或者哪个元素基本上显示了它...一旦你得到了这个,可能会有一些类或其他东西是相似的,你可以做的就是通过调用 "document.body.innerHTMl" 将整个页面 HTML 放入 JavaScript 函数中。然后在它的源代码中简单地搜索那个 className 或任何其他内容,然后获取你所需元素的 ClassName,然后调用它的 onClick JavaScript。 - PjAndro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接