Открытие «горячих клавиш» в новой вкладке открывает ту же страницу, на которой вы находились при нажатии на «горячие клавиши»

Привет, я думаю, это не баг, а скорее неожиданное поведение…

На Mac я привык использовать ⌘+Click для открытия ссылок в новых вкладках. Когда я делаю это в разделе «Горячие клавиши» в гамбургер-меню, открывается новая вкладка, но сами горячие клавиши в ней не отображаются.

Навигация для этой «ссылки» обрабатывается внутри приложения. Я взял слово ссылка в кавычки, потому что это не настоящая ссылка, так как она не указывает на какой-либо конкретный адрес

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

Обратите внимание, что атрибут href пуст?

Это просто открывает модальное окно или диалоговое окно. Поэтому невозможно открыть эту ссылку в новой вкладке и при этом отобразить модальное окно.

1 лайк

Привет, я понимаю. Я просто хотел отметить, что с точки зрения пользователя это неожиданное поведение, поскольку визуально «Горячие клавиши» выглядит точно как ссылка. Если бы существовал способ дать понять, что процесс «открыть в новой вкладке» не сработает, это было бы идеально. Конечно, я думаю, что это не требует приоритетной обработки — не могу представить, чтобы с этим сталкивалось слишком много людей.

Кстати, полное удаление атрибута href (вместо установки его в пустую строку, что является ссылкой на текущий документ) должно предотвратить открытие ссылки в новой вкладке, по крайней мере в большинстве браузеров.

4 лайка

Справедливо, тег якоря без href допустим в HTML5.

Проблема с его удалением в том, что ссылка исключится из порядка табуляции, что означает невозможность перехода к ней с помощью клавиатуры или других альтернативных методов ввода.

Мы можем исправить это, добавив 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 лайков