2

Android WebView で onTouchEvent() 関数を呼び出す JavaScript でタッチ イベントを生成することは可能ですか?

touchstart イベントと touchend イベントの両方を生成する次の JavaScript コードを試してみましたが、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 フレームワークに入っていませんか?

どうも

4

1 に答える 1

2

タッチイベントの使用方法がわからない場合や、レンダリングされたdomから含まれているwebviewコントロールのハンドラーまでタッチイベントをバブルできるかどうかもわかりませんが、次の方法を試すことができます。

1)JavaScriptインターフェイスをWebビューに追加し、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);
    ...
}
于 2012-10-11T04:17:32.220 に答える