「キーボードショートカット」を新しいタブで開くと、クリックした時点の同じページが表示される

こんにちは、これはバグというより、予期しない動作だと思います。

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 属性を持たない anchor タグも有効です。

ただし、これを削除すると問題があります。リンクがタブインデックスから外れてしまい、キーボードやその他の代替入力手段でそのリンクに到達できなくなるからです。

その場合、tabindex: 0 を追加することで対応できます。

例えば、以下のように実装できます。

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

href を削除することに関連する他の問題について、@awesomerobot さんはご存知でしょうか?

「いいね!」 5

これは新しいタブを開くよりもわずかに改善されたように感じますが、それでもそのリンクを新しいタブで開こうとしても何の反応もないのは奇妙に感じます。特に、メニュー内の他のリンクはすべて正常に動作しているのに、それだけがそのように振る舞っている点が気になります。

理想的には、どちらの場合でもキーボードモーダルを開くべきです。/widgets/link.js.es6 には以下のようなコードがあります。

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

つまり、新しいウィンドウやタブを開く必要がある場合はクリック時の処理を阻止しているようです。 Modifier キーの有無に関わらずモーダルを開けるように、この部分を少し整理できないでしょうか?

「いいね!」 5