我的应用程序设计用于户外(游艇)并在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处理吗?
答案 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为伟大的论坛。