首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript onclick可以在浏览器中运行,而不能在WebView中运行

JavaScript onclick可以在浏览器中运行,而不能在WebView中运行
EN

Stack Overflow用户
提问于 2018-09-14 07:04:02
回答 2查看 1.6K关注 0票数 0

我有一个简单的web应用程序,我正试图通过Android WebView来显示它。该网页仅由一个HTML表组成。所述表格的每个单元格都具有设置为javascript函数的onclick属性,该javascript函数调出具有某些信息的框。

这在所有浏览器中都能很好地工作,无论是桌面还是移动浏览器。然而,当我试图通过我的Android WebView点击任何表格单元时,什么也没有发生,网页似乎无法识别这些点击。

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

我试着寻找答案,但我没有运气。我找到的所有线程都是关于解决不同问题的。

我没有试图通过调用JavaScript函数来运行安卓代码,我只需要网站JS来识别点击。

我要怎么做才能让它工作呢?非常感谢,如果我的术语不准确,请不要太生气,我只是一个自学成才的爱好者。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-15 04:34:18

问题是我使用setOnTouchListener来处理WebView的点击,即使我确保返回false,以便让安卓知道点击应该由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;
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2018-09-14 08:19:46

试试看

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52322870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档