Python 网页中的 Javascript 事件处理程序不起作用

标签 javascript python event-handling

我有一个由 Python 生成的网页,需要启用 Javascript 事件处理程序。下面的代码返回错误:节点未定义。

以下问题的答案看起来很有希望,但我缺少“节点”变量赋值。我想添加评论,但系统不允许我这样做。它说我需要 50 的声誉才能添加评论。

Detecting arrow key presses in JavaScript

<BODY>
<script type="text/javascript">
node.addEventListener("keydown", function(event) {
    const key = event.key; // "ArrowRight", "ArrowLeft", "ArrowUp", or "ArrowDown"
});
switch (event.key) {
    case "ArrowLeft":
        // Left pressed
        alert( "Left Arrow" );
        break;
    case "ArrowRight":
        // Right pressed
        alert( "Right Arrow" );
        break;
    case "ArrowUp":
        // Up pressed
        alert( "Up Arrow" );
        break;
    case "ArrowDown":
        // Down pressed
        alert( "Down Arrow" );
        break;
}
</script>

最佳答案

假设您想在整个页面上监听按键事件,您可以将 node 替换为已在 JS 中定义的 document。您还需要将 switch 语句移动到事件监听器的回调函数中,如下所示:

document.addEventListener("keydown", function(event) {
  event.preventDefault(); // prevent page from scrolling
  const key = event.key; // "ArrowRight", "ArrowLeft", "ArrowUp", or "ArrowDown"
  switch (key) { // change to event.key to key to use the above variable
    case "ArrowLeft":
      // Left pressed
      alert("Left Arrow");
      break;
    case "ArrowRight":
      // Right pressed
      alert("Right Arrow");
      break;
    case "ArrowUp":
      // Up pressed
      alert("Up Arrow");
      break;
    case "ArrowDown":
      // Down pressed
      alert("Down Arrow");
      break;
  }
});
body {
  height: 200vh;
}
<p>Some text</p>

解释:

本质上 document 代表您的整个页面。您可以向您的文档(即页面)添加一个事件监听器,以便在发生某些事情时执行一个函数。在我们的代码中,我们添加了一个 keydown 事件监听器,这意味着我们希望在按下某个键时执行一些代码。将运行的代码是 function(event) {...} 中的代码。当事件发生时,我们可以从传递给触发函数的 event 参数中获取有关该事件的具体细节。我们可以从传递给函数的 event 对象中获取许多详细信息,其中之一就是按下的 key。在我们的代码中,我们使用 evet.key 获取按下的键,然后将其存储在名为 key 的变量中。然后我们使用 switch 语句检查按下了哪个键,如果出现特定键则执行相关代码。

关于Python 网页中的 Javascript 事件处理程序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56723984/

相关文章:

javascript - 每个图形节点上的链接动画/转换 - D3.js

javascript - 在保留时区的 Javascript 中更改日期字符串

javascript - 如何从 fetch :success event? 中获取这个集合

python - 合并两个 pandas 数据框并跳过右侧的公共(public)列

event-handling - 按名称动态添加事件监听器

javascript - 事件处理问题

javascript - 为什么 webview 报告不同的屏幕尺寸,我可以禁用它吗

javascript - moment.js, 'type object' 没有属性 'utc'

python - 如何在Python中使用自定义字段将对象序列化为json

javascript - 为什么我在快速打字时会出现错误的、双倍的输入值?