プレゼンテーション スライドを作成するために、Hakim El Hattab による Reveal.js を使用しています。スライドにテキストエリアを追加しました。テキストエリア内で、特定のキーが押されたときに JavaScript 関数が呼び出されないようにし、入力のデフォルトの動作を復元したいと考えています。たとえば、reveal.js の以下のコード行からわかるように、p
が押されると、関数navigatePrev()
が呼び出されます。この関数が呼び出されないようにしたいので、が押されたp
ときにテキストエリアに入力したいだけです。p
jqueryを使用してこれを行うにはどうすればよいですか? 次のスクリプトを追加しようとしましたが、役に立ちません。
<script>
$(document).keydown(function (e) {
if ($(e.target).is('textarea')) {
e.stopPropagation();
}
})
</script>
Reveal.js で定義された関数は引き続き呼び出されます。return false
の代わりに使用しe.stopPropagation()
ても役に立ちません。上記の jQuery 行もページの最後に含めています (reveal.js が呼び出された後)。
ありがとうございました。
Reveal.js の関連行
function onDocumentKeyDown(event) {
// FFT: Use document.querySelector( ':focus' ) === null
// instead of checking contentEditable?
// Disregard the event if the target is editable or a
// modifier is present
if (event.target.contentEditable != 'inherit' || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return;
var triggered = false;
switch (event.keyCode) {
// p, page up
case 80: case 33: navigatePrev(); triggered = true; break;
// n, page down
case 78: case 34: navigateNext(); triggered = true; break;
// h, left
case 72: case 37: navigateLeft(); triggered = true; break;
// l, right
case 76: case 39: navigateRight(); triggered = true; break;
// k, up
case 75: case 38: navigateUp(); triggered = true; break;
// j, down
case 74: case 40: navigateDown(); triggered = true; break;
// home
case 36: navigateTo(0); triggered = true; break;
// end
case 35: navigateTo(Number.MAX_VALUE); triggered = true; break;
// space
case 32: overviewIsActive() ? deactivateOverview() : navigateNext(); triggered = true; break;
// return
case 13: if (overviewIsActive()) { deactivateOverview(); triggered = true; } break;
}
}