Почему CTRL-клик не открывает некоторые ссылки в новой вкладке?
Иногда при просмотре я щелкаю по ссылке, чтобы открыть ее на новой вкладке. Однако вместо того, чтобы открывать новую вкладку, она щелкается и просматривается на текущей вкладке, как если бы я щелкала по ней нормально, не удерживая Ctrl. Я уверен, что держу Ctrl полностью вниз и что нет ошибок в работе клавиатуры или мыши.
Время от времени открывается новая вкладка со ссылкой, но текущая вкладка также будет одновременно переходить по ссылке.
3 ответа
JavaScript за кадром
Это происходит, когда разработчики таких веб-страниц перехватывают щелчки мыши с помощью JavaScript и выполняют асинхронные сетевые запросы внутри перехватчика, потенциально для отслеживания ваших кликов. Когда асинхронный сетевой вызов возвращается, JS выполняет программное перенаправление, используя что-то вроде: window.location.href = url;
Этот программный редирект всегда будет загружать страницу в той же вкладке, даже если вы удерживаете Ctrl (Cmd на Mac).
Используйте MiddleMouse для переопределения
Если щелкнуть среднюю кнопку мыши или выбрать "открыть в новой вкладке" в контекстном меню, полностью обойдется перехваченный код JavaScript и откроется ссылка, как если бы вообще не было кода JavaScript.
Я написал дополнение к Firefox (скучно) с именем link-fixer, чтобы исправить это. Вы можете установить с addons.mozilla.org. Это требует Firefox 48.0 или позже.
Цитирую себя:
Поведение по умолчанию ctrl+click, shift+click и cmd+click при переходе по ссылкам - открыть ссылку в новой вкладке или новом окне. Такое поведение иногда нарушается неосторожными разработчиками. Это дополнение восстанавливает поведение по умолчанию, гарантируя, что ключи модификаторов всегда соблюдаются.
После установки вам больше ничего не нужно делать. Вы можете нажать Ctrl + клик по любой ссылке, и она откроется в новой вкладке. Это также поможет решить проблему, которую вы описываете во втором абзаце.
Возьмем эту ссылку в качестве примера:
<a href="test.php" onclick="someFunction(this); return false;">Test</a>
href
Атрибут, в данном случае, создает псевдоссылку для удобства чтения (он также позволит работать ссылке, даже если JavaScript отключен). Причина этого в том, что onclick
Атрибут всегда запускается первым. Большие сайты, такие как Google, делают это, чтобы отслеживать клики и пытаться запретить пользователю посещать вредоносные сайты. Из-за этого почему-то не работает Ctrl + Click. Однако, если вы используете среднюю кнопку мыши, это почти всегда работает.