是否可以在javascript中生成触摸事件,该事件将在我的android WebView中调用onTouchEvent()函数?
我尝试使用以下javascript代码生成touchstart和touchend事件,但我的webview onTouchEvent()函数不会被调用。
try{
var evt = document.createEvent('TouchEvent');
evt.initTouchEvent('touchstart', true, true);
evt.view = window;
evt.altKey = false;
evt.ctrlKey = false;
evt.shiftKey = false;
evt.metaKey = false;
this.dispatchEvent(evt);
var evt1 = document.createEvent('TouchEvent');
evt1.initTouchEvent('touchend', true, true);
evt1.view = window;
evt1.altKey = false;
evt1.ctrlKey = false;
evt1.shiftKey = false;
evt1.metaKey = false;
this.dispatchEvent(evt1);
}
catch(e)
{
alert(e);
}
我的代码中缺少什么,或者javascript事件甚至没有进入android框架?
THX
答案 0 :(得分:2)
不确定您打算如何使用触摸事件,也不确定是否可以将渲染的dom中的触摸事件冒泡到包含webview控件的处理程序,但您可以尝试这种方法:
1)在Web视图中添加一个javascript界面,并公开一个类的简单对象,用于捕获dom生成的事件:
(inside onCreate of ContainerActivity)
this.mWebView.addJavascriptInterface
( new JavascriptContainer() {
final private WebView mView = ContainerActivity.this.mWebView;
@Override
public void captureEvent(final String sDetails) {
// do what you want with the details and webview...
}
}
, "appReceiver"
);
2)捕获触摸事件或点击渲染的html中的事件(或其他)并使用javascript将它们委托给公开的全局“appReceiver”:
if (window.appReceiver !== undefined) {
window.appReceiver.captureEvent('blah blah: ' + event.x + ':' + event.y);
...
}