Forward from: Бурундук-зануда ноет на Луну
Ctrl+click
Помните, был такой сайт, ВКонтакте, он же vk.com? Впрочем, речь не про него. Там я только заметил одну маленькую особенность.
Есть там сверху уведомления, а в уведомлениях — ссылка на запись, где что-то произошло (см. рисунок 3). И вот я хочу открыть эту запись, конечно же, в новой вкладке. Делаю Ctrl+click на ней. Не работает — всё равно «открывает» запись джаваскриптом слоем на текущей странице. При этом можно делать middle-click или «Open link in new tab» из контекстного меню, они работают правильно.
Почему же нажатие с Ctrl поломано? Потому что у элемента , который за это отвечает, переопределён метод onclick. И вместо того чтобы делать как просит пользователь, браузер вызывает этот метод с надеждой, что сайт это если что обработает.
Сайт может быть даже и обработает. Иногда. У того же VK в других местах аналогичные ссылки ведут себя адекватно. Видимо, ловят событие, проверяют, что оно с нажатым Ctrl, и просят браузер самому разобраться.
Но почему браузер вообще разрешает сайту перееопределять эту логику — загадка. Кстати, если верить stackoverflow/3023816, это проблема не всех браузеров — например, Internet Explorer работает правильно. Там событие в onclick приходит только если это действительно клик, а не Ctrl+клик.
Помните, был такой сайт, ВКонтакте, он же vk.com? Впрочем, речь не про него. Там я только заметил одну маленькую особенность.
Есть там сверху уведомления, а в уведомлениях — ссылка на запись, где что-то произошло (см. рисунок 3). И вот я хочу открыть эту запись, конечно же, в новой вкладке. Делаю Ctrl+click на ней. Не работает — всё равно «открывает» запись джаваскриптом слоем на текущей странице. При этом можно делать middle-click или «Open link in new tab» из контекстного меню, они работают правильно.
Почему же нажатие с Ctrl поломано? Потому что у элемента , который за это отвечает, переопределён метод onclick. И вместо того чтобы делать как просит пользователь, браузер вызывает этот метод с надеждой, что сайт это если что обработает.
Сайт может быть даже и обработает. Иногда. У того же VK в других местах аналогичные ссылки ведут себя адекватно. Видимо, ловят событие, проверяют, что оно с нажатым Ctrl, и просят браузер самому разобраться.
Но почему браузер вообще разрешает сайту перееопределять эту логику — загадка. Кстати, если верить stackoverflow/3023816, это проблема не всех браузеров — например, Internet Explorer работает правильно. Там событие в onclick приходит только если это действительно клик, а не Ctrl+клик.