Android longpress没有作为oncontextmenu事件传递给webView

时间:2014-04-17 23:22:56

标签: android html webview

我的应用程序设计用于户外(游艇)并在WebView中显示网页(因此我可以使用所有显示区域,修复横向,禁用无关输入,如BACK_KEY等)。
在网页中,我想在图像上捕获oncontextmenu事件,如:

<img src="start_line_pin.png" width=55px     
id="pinButton" 
oncontextmenu = 'startLinePress("PIN"); return false'\>

当我在我的应用程序的webview中打开页面时,长按不会触发该事件。 Android似乎没有将longpress事件传递给网页。
如果我直接在Chrome中打开页面,我的startLinePress函数会按照我的意图长时间调用。

那么,有人可以建议我如何将longpress传递到我的WebView中的HTML而不是由Android处理吗?

1 个答案:

答案 0 :(得分:1)

论坛这样一个最有益的功能是,它让你从另一个角度真正考虑你的问题。
我的问题的答案在于我尝试使用未记录的功能 - 在网页上调用oncontextmenu事件的longClick。 答案是在java中使用onLongClick事件,然后使用WebView.loadUrl方法将事件传递给javascript函数。我的WebView是contentView,javascript函数是javascript:startLinePress,如下所示:

         contentView.setOnLongClickListener(new OnLongClickListener() {
          @Override
          public boolean onLongClick(View v) {
              WebView.HitTestResult hr = ((WebView)v).getHitTestResult();
              if(hr.getType() == 5){                     
                    contentView.loadUrl("javascript:startLinePress(\"ACTIVITY\")");
              }

通过检查hr.getExtra(),您需要更多的工作来确定点击了哪个元素,但您会得到一般的想法。
感谢stackoverflow为伟大的论坛。