javascriptでキープレスとマウスダウンイベントを検出することになりました。LoadCompleted イベント内で、AW_WebView.InvokeScript("eval", new string[] { scriptsString }); を使用して JavaScript を挿入します。
キープレススクリプト:
window.document.body.onkeydown = function(event){
window.external.notify('key_pressed');
};
マウス ダウン スクリプト:
document.onmousedown = function documentMouseDown(e){
window.external.notify('mouse_down');
}
また、追加のユーザー イベント用にスクリプトを追加することもできます。
マウス ダウンまたはキー プレスが検出されると、window.external.notify("keypress or mouse down") が実行されます。このメッセージは、WebView_ScriptNotify イベントで「受信」されます。WebView からメッセージを受信したら、タイマーを設定します。タイマーが既に設定されている場合は、それをキャンセルして、タイマーを再度開始します。タイマーが終了すると、いくつかのコードが実行されます。
private void SetTimer(int time)
{
if (!TimerEnabled)
{
return;
}
else
{
if (DelayTimer != null)
{
DelayTimer.Cancel();
DelayTimer = null;
}
//the timeout
TimeSpan delay = TimeSpan.FromSeconds(time);
bool completed = false;
DelayTimer = ThreadPoolTimer.CreateTimer(
(source) =>
{
//
// Update the UI thread by using the UI core dispatcher.
//
Dispatcher.RunAsync(
CoreDispatcherPriority.High,
() =>
{
//
// UI components can be accessed within this scope.
//THIS CODE GETS EXECUTED WHEN TIMER HAS FINISHED
});
completed = true;
},
delay,
(source) =>
{
//
// TODO: Handle work cancellation/completion.
//
//
// Update the UI thread by using the UI core dispatcher.
//
Dispatcher.RunAsync(
CoreDispatcherPriority.High,
() =>
{
//
// UI components can be accessed within this scope.
//
if (completed)
{
// Timer completed.
}
else
{
// Timer cancelled.
}
});
});
}
}
これが誰かを助けることを願っています! これがこれを行うための完璧な方法ではないことはわかっていますが、当面はこれでうまくいきました。