我有一个简单的Web应用程序,我试图通过Android WebView显示。该网页只包含一个HTML表格。所述表的每个单元具有设置为javascript函数的onclick属性,其打开具有一些信息的框。
这适用于所有浏览器,包括桌面和移动设备。但是,当我尝试通过Android WebView单击任何表格单元格时,没有任何反应,网页似乎无法识别点击次数。
(注意:我确实为webview启用了JavaScript,它确实完成了它应该做的事情,例如,当加载文档时,只有它不识别点击并且不会触发相应的事件。)
我试过寻找答案,但我没有运气。我发现的所有主题都是关于解决不同的问题。
我不是试图通过调用JavaScript函数来运行Android代码,我只需要网站JS来识别点击。
我需要做些什么来完成这项工作?非常感谢你提前,如果我的术语不合适,请不要太烦恼,我只是一个自学成才的狂热爱好者。
原来问题是我使用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;
}
}
}