JavaScript onclick适用于浏览器,而不适用于Android WebView

问题描述 投票:0回答:2

我有一个简单的Web应用程序,我试图通过Android WebView显示。该网页只包含一个HTML表格。所述表的每个单元具有设置为javascript函数的onclick属性,其打开具有一些信息的框。

这适用于所有浏览器,包括桌面和移动设备。但是,当我尝试通过Android WebView单击任何表格单元格时,没有任何反应,网页似乎无法识别点击次数。

(注意:我确实为webview启用了JavaScript,它确实完成了它应该做的事情,例如,当加载文档时,只有它不识别点击并且不会触发相应的事件。)

我试过寻找答案,但我没有运气。我发现的所有主题都是关于解决不同的问题。

我不是试图通过调用JavaScript函数来运行Android代码,我只需要网站JS来识别点击。

我需要做些什么来完成这项工作?非常感谢你提前,如果我的术语不合适,请不要太烦恼,我只是一个自学成才的狂热爱好者。

javascript android web webview onclick
2个回答
0
投票

试试吧

enter image description here

然后在HTML中,直接从按钮标记中调用它:

enter image description here


0
投票

原来问题是我使用setOnTouchListener来处理WebView点击,即使我确保返回false以便让Android知道点击应该由WebView进一步处理,但这并没有发生。我相信可以通过在代码中的某个地方调用super.OnTouchEvent(event)来解决这个问题,但是我不确定我是如何做到这一点的,而且我发现了一个非常简单的方法,在我看来,它更清楚实际发生了什么。

我们的想法是通过扩展WebView并覆盖onTouchEvent方法来创建自定义“MyWebView”类:

public class MyWebView extends WebView
{
    private GestureDetector mDetector;

    public MyWebView(Context context)
    {
        super(context);
        mDetector = new GestureDetector(context, new MyGestureListener());
    }

    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
        mDetector.onTouchEvent(event);
        this.performClick();
        return super.onTouchEvent(event);
    }

    @Override
    public boolean performClick()
    {
        return super.performClick();
    }

    class MyGestureListener extends GestureDetector.SimpleOnGestureListener
    {
        @Override public boolean onDown(MotionEvent event)
        {
            return true;
        }

        @Override public boolean onSingleTapConfirmed(MotionEvent e)
        {
            //do stuff here
            return false;
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.