Чому натискання CTRL не відкриває деякі посилання на новій вкладці?


18

Іноді під час перегляду я натискаю клавішу ctrl, щоб відкрити її на новій вкладці. Однак замість того, щоб відкрити нову вкладку, на ній натискають і переглядають її в поточній вкладці так, ніби я натискав її нормально, не тримаючи ctrl. Я впевнений, що повністю утримую клавішу ctrl і немає помилок з клавіатурою чи мишкою.

Іноді нова вкладка буде відкрита за посиланням, але поточна вкладка також буде одночасно переходити до посилання.


3
Можливо, вони не є фактичними посиланнями, в тому сенсі, що, можливо, "посилання" використовує onclickоперацію, яка може зіпсуватись із клавішею ctrl + click. Чи можете ви навести конкретний приклад? meta.stackoverflow.com/questions/276138/…
imtheman

@imtheman Чудова справа, однак, це, мабуть, не так, принаймні в прикладах, які я бачив. Я знаю це, тому що завжди наводя курсор миші на посилання заздалегідь, щоб переконатися, що в рядку стану відображається URL-адреса. Приклад тут: nationaljournal.com/white-house/… У стовпці / панелі ліворуч посилання на інші історії виглядають як їх власні URL-адреси, перевірені навіть стрибком до місця їх розташування у джерелі, однак, натискаючи клавішу ctrl doesn не працюю, натомість дію, як ніби ctrl не утримується.
Coldblackice

Якщо ви подивитесь на вихідний код цього веб-сайту, ви побачите це за одним із посилань:<a class="primary" href="/superuser//congress" onclick="var x=&quot;.tl(&quot;;s_objectID=&quot;http://www.nationaljournal.com/congress_1&quot;;return this.s_oc?this.s_oc(e):true">Congress</a>
imtheman

1
Хоча у нього є hrefатрибут, він перезаписується подією onclick.
imtheman

1
Я написав додаток для Firefox, щоб виправити цю проблему. github.com/danielnixon/link-fixer
danielnixon

Відповіді:


8

JavaScript за кадром

Це відбувається, коли розробники таких веб-сторінок перехоплюють клацання миші за допомогою JavaScript і роблять асинхронні мережеві запити всередині перехоплювача, що потенційно відстежує ваші кліки. Коли асинхронний мережевий виклик повертається, JS робить програмне переадресація, використовуючи щось на кшталт:window.location.href = url;

Це програмне переспрямування завжди буде завантажувати сторінку на ту ж вкладку, навіть якщо ви її утримуєте Ctrl( Cmdна Mac).

Використовуйте MiddleMouse для перекриття

Клацання середньої кнопки миші або вибору "відкрити в новій вкладці" у контекстному меню повністю обійде перехоплюючий код JavaScript і відкриє посилання так, як ніби коду JavaScript взагалі не було.


Це не зовсім правильно. Хоча деякі конструкції коду дозволяють альтернативний тригер, який змушує сторінку відкриватися на новій вкладці, інші конструкції коду запобігають цьому. Це частіше зустрічається на сайтах з динамічним контентом, який не має типових "сторінок", а натомість генерує сторінки під час натискання кнопок. У цьому випадку на сторінці немає справжніх "посилань", а скоріше кнопки, які викликають поведінку, схожі на додаток.
music2myear

6

Я написав додаток для Firefox (нудно) з назвою фіксатор посилань, щоб виправити це. Ви можете встановити з addons.mozilla.org . Для цього потрібен Firefox 48.0 або новішої версії.

Цитую себе:

Типова поведінка ctrl + click, shift + click та cmd + click при натисканні на посилання - це відкриття посилання на новій вкладці чи новому вікні. Таку поведінку іноді порушують недбалі розробники. Цей додаток відновлює поведінку за замовчуванням, забезпечуючи завжди дотримання клавіш модифікатора.

Після встановлення більше нічого не потрібно робити. Ви можете ctrl + натиснути будь-яке посилання, і воно відкриється на новій вкладці. Це також вирішить варіант проблеми, яку ви описуєте у другому абзаці.


1
Привіт, Даніеле, хоча це чудово, що ти щось написав для вирішення цього питання, чи можеш ти прочитати, як рекомендувати програмне забезпечення у відповіді , зокрема, напівжирними частинами та оновити свою відповідь, будь ласка? Дякую :)
bertieb

3

Розглянемо посилання як приклад:

<a href="test.php" onclick="someFunction(this); return false;">Test</a>

У hrefцьому випадку атрибут створює псевдопосилання для читабельності (він також дозволить посиланню працювати, навіть якщо JavaScript відключений). Причиною цього є те, що onclickатрибут завжди працює першим. Великі веб-сайти, такі як Google, роблять це для відстеження кліків і намагаються не допустити відвідувача до відвідування сайтів зловмисних програм. Через це чомусь Ctrl+ Клацання не працює. Однак якщо ви використовуєте середню кнопку на миші, це майже завжди працює.


1
Спроба знайти середню мишу на Mac .
Едуард

Я написав додаток для Firefox, щоб виправити цю проблему. github.com/danielnixon/link-fixer
danielnixon
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.