@blockly/keyboard-navigation

中文文档
3.0.5发布于 2026/04/08Apache-2.0TypeScriptESM + CJS零依赖近 30 天下载 1.2万

键盘导航插件 .

中文使用文档
文档目录9 节
  1. 最终用户指示
  2. 提供反馈
  3. 在您的应用程序中使用
  4. 安装
  5. 使用量
  6. 在页面上添加快捷键
  7. 使用自定义工具箱
  8. 使用跨标签复制插件
  9. 捐款

@ blockly/ 键盘导航

Blockly 的这个插件允许键盘导航 。 它包括 可能对视力障碍和运动有帮助的不同行为 受伤的人在Blockly的工作空间航行.

键盘导航和屏幕阅读器支持紧密结合. 布莱克利 团队打算在2025年Q3中逐步增加屏幕阅读器支持, 我们验证了导航的一般方法.

有关规划和时间表的更多信息,请参见我们 无障碍网站。 。 。 .

最终用户指示

您可以探索当前插件在 测试页面。 。 。 .

要使用键盘导航, 请点击工作空间或按下标签直到您 到达工作空间.

一旦浏览器聚焦于 Blockly 工作空间, 您可以使用箭头键到 移动 a 光标 在工作空间周围 您可以使用键盘快捷键 在光标上采取行动.

例如,您可以将光标移动到 下拉字段并按下 Enter 键来编辑字段.

可用的动作取决于光标位置 。 例如,如果 光标在一块块上,您可以复制它 Ctrl + C。 。 。 .

您可以按下打开工具箱 T 或按键 Tab 直到工具箱打开 重点突出。 就像工作空间一样,你可以使用箭头键来移动 工具箱并选择一个块。 按键 Enter 将块放在 光标在工作空间的位置 .

如果你不知道有什么动作,你 可按键 / 以查看行动列表.

提供反馈

如果您使用测试页找到一个错误, 请打开一个问题让我们知道 放在这个仓库里! 包含如何复制错误的信息, 什么 坏的行为, 和你期望它做什么。 Blockly队会的 区分错误并添加到行进图中.

在您的应用程序中使用

安装

使用此插件至少需要使用 Blockly v12.2.0. 你可以找到那个 当前 Blockly 的最低版本 peerDependencies 页:1 package.json 用于插件的文件.

雅伦

yarn add @blockly/keyboard-navigation

无

npm install @blockly/keyboard-navigation --save

使用量

import * as Blockly from 'blockly';
import {KeyboardNavigation} from '@blockly/keyboard-navigation';

// Register styles. Only do this once per page-load.
// Must be done before calling Blockly.inject.
KeyboardNavigation.registerKeyboardNavigationStyles();

// Register the default toolbox. Only do this once per page-load.
// Must be done before calling Blockly.inject.
// See instructions below if you don't use the default toolbox.
KeyboardNavigation.registerNavigationDeferringToolbox();

// Inject Blockly.
const workspace = Blockly.inject('blocklyDiv', {
  toolbox: toolboxCategories,
});
// Initialize plugin.
const keyboardNav = new KeyboardNavigation(workspace);

在页面上添加快捷键

要看到键盘在用户按出 / 时帮助弹出, 您需要在主机页面中添加一个带有 Blockly diiv 元素并带有 id "shortcuts" 的空 div 元素. 插件将注意布局和格式化.

...
<div id="shortcuts"></div>
...
<div id="blockly"></div>
...

使用自定义工具箱

如果你提供自己的子类 Toolbox,您需要覆盖 onKeyDown_ 方法使它成为一个不开放。 基础类有自己的键盘导航内置,需要禁用.

class YourCustomToolbox extends Blockly.Toolbox {
  protected override onKeyDown_(e: KeyboardEvent) {
    // No-op, prevent keyboard handling by superclass in order to defer to
    // global keyboard navigation.
  }
}

使用跨标签复制插件

此插件增加了用于复制和粘贴的上下文菜单项 。 它还增加了反馈,将复制和粘贴作为土司,在成功复制或剪接时向用户显示. 它与 @blockly/plugin-cross-tab-copy-paste 通过以下步骤:

import * as Blockly from 'blockly';
import {KeyboardNavigation} from '@blockly/keyboard-navigation';
import {CrossTabCopyPaste} from '@blockly/plugin-cross-tab-copy-paste';

// Register styles. Only do this once per page-load.
// Must be done before calling Blockly.inject.
KeyboardNavigation.registerKeyboardNavigationStyles();

// Inject Blockly.
const workspace = Blockly.inject('blocklyDiv', {
  toolbox: toolboxCategories,
});

// Initialize cross-tab-copy-paste
// Must be done before keyboard-navigation
const crossTabOptions = {
  // Don't use the context menu options from the ctcp plugin,
  // because the keyboard-navigation plugin provides its own.
  contextMenu: false,
  shortcut: true,
};
const plugin = new CrossTabCopyPaste();
plugin.init(crossTabOptions, () => {
  console.log('Use this error callback to handle TypeError while pasting');
});

// Initialize keyboard-navigation.
// You must pass the `allowCrossWorkspacePaste` option in order for paste
// to appear correctly enabled/disabled in the context menu.
const keyboardNav = new KeyboardNavigation(workspace, {
  allowCrossWorkspacePaste: true,
});

捐款

为了了解更多对该项目的贡献,请参见: 贡献页。 。 。 .

版本与发布记录

@blockly/keyboard-navigation 共发布 103 个版本,首次发布于 2021/03/26;过去 12 个月发布了 1 个版本。

版本发布日期距今
3.0.5latest2026/04/087 个月前
3.0.32025/10/071.1 年前
3.0.22025/09/181.1 年前
4.0.0-beta.0beta2025/09/171.1 年前
3.0.12025/09/031.2 年前
3.0.02025/08/291.2 年前

关于 @blockly/keyboard-navigation 的常见问题

@blockly/keyboard-navigation 是什么?

键盘导航插件 .

如何安装 @blockly/keyboard-navigation?

在项目目录运行 npm install @blockly/keyboard-navigation,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:blockly(^12.3.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@blockly/keyboard-navigation 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@blockly/keyboard-navigation 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@blockly/keyboard-navigation 可以商用吗?

@blockly/keyboard-navigation 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@blockly/keyboard-navigation 的下载量有多少?

根据 npm 官方下载统计,@blockly/keyboard-navigation 在 2026/10/09 – 2026/11/07 这 30 天内被下载 11,769 次,日均约 392 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@blockly/keyboard-navigation 还在维护吗?

最新版本 3.0.5 发布于 2026/04/08(7 个月前);至今共发布 103 个版本,其中过去 12 个月发布了 1 个;首次发布于 2021/03/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。