在新标签页中打开“键盘快捷键”会打开你点击“键盘快捷键”时所在的同一页面

您好,我认为这更像是一个意外行为而非 Bug。

我在 Mac 上习惯于使用 ⌘+点击 在新标签页中打开链接。当我对汉堡菜单中的“键盘快捷键”执行此操作时,会打开一个新标签页,但该页面并未显示键盘快捷键。

该“链接”的导航由应用内处理。我之所以将链接加上引号,是因为它实际上并非真正的链接,因为它并不指向任何具体地址。

<a class="widget-link keyboard-shortcuts-link" href="" title="Keyboard Shortcuts">
  <span class="d-label">Keyboard Shortcuts</span>
</a>

注意到 href 属性是空的了吗?

它只是打开一个模态框或对话框。因此,无法在新标签页中打开该链接并显示该模态框。

1 个赞

你好,我明白了。我只是想指出,从用户的角度来看,这种行为是出乎意料的,因为“键盘快捷键”在视觉上看起来完全像一个链接。如果有办法提供一些提示,表明“在新标签页打开”的操作不会生效,那就最理想了。当然,我认为这不需要优先处理——我想不太会有太多人遇到这个问题。

仅供参考,完全移除 href 属性(而不是将其设置为空字符串,后者是 对当前文档的引用)应该可以防止链接在新标签页中打开,至少在大多数浏览器中是这样。

4 个赞

有道理,在 HTML5 中,没有 href 的锚标签是有效的。

但移除它的问题在于,这会将其从 Tab 键索引中移除,导致无法通过键盘或其他辅助输入方式访问该链接。

我们可以通过添加 tabindex: 0 来解决这个问题。

因此,我们可以这样做:

links.push({
  action: "showKeyboard",
  className: "keyboard-shortcuts-link",
  label: "keyboard_shortcuts_help.title",
  attributes: {
    tabindex: 0
  }
});

除非 @awesomerobot 知道移除 href 还存在其他问题?

5 个赞

我觉得这比起在新标签页中打开略有改进,但当我尝试在新标签页中打开该链接时,仍然感觉有些奇怪……尤其是因为这是菜单中唯一表现如此异常的链接。

理想情况下,无论何种情况都应打开键盘模态框。在 /widgets/link.js.es6 中,我们有:

click(e) {
  if (wantsNewWindow(e)) {
    return;
  }
  ...

看来,如果请求在新窗口/标签页中打开,我们在那里会阻止点击时的任何操作?……我在想,我们是否可以在那里做一些重组,以便即使在使用修饰键时也能打开模态框?

5 个赞