Забыли пароль?
Запросите новый здесь.

Голосование
Как часто вы посещаете данный сайт?

1 раз в день
1 раз в день
17% [1 Голос]

1 раз в неделю
1 раз в неделю
33% [2 Голосов]

1 раз в месяц
1 раз в месяц
17% [1 Голос]

Очень редко
Очень редко
17% [1 Голос]

Первый раз зашёл
Первый раз зашёл
17% [1 Голос]

Голосов: 6
Вы должны авторизироваться, чтобы голосовать.
Начат: 26.07.2022 08:08

Архив опросов
Случайная тема
Миничат
Только пользователи могут отправлять сообщения.

Redfield
Offline
· 17.04.2024 08:42

Redfield
Offline
· 10.04.2024 19:25
Сила в единстве. Чем больше людей будет объединено светлой идей для развития, тем выше шанс к успеху. Все в меру конечно. Но, вы ведь хотите большего? Возможно начало тут.

Redfield
Offline
· 10.04.2024 19:22
jikaka, у многихтак. я не зря пишу тут. Потому что все, хотим большего. Задумывались как? Если вы думайте что это невозможно. То зря. Начните с общения. Это даст повод собраться Единомышленикам

jikaka
OfflineAdmin
· 09.04.2024 16:01
Redfield, работа, дом, работа, дом, оп, выходные, работа, дом, работа, дом...

Redfield
Offline
· 04.04.2024 19:19
Ребята. Просыпайтесь уже. Что программисты и креатившики вымерли что ли? Но, есть ведь что делать.

Архив миничата
Сейчас на сайте
» Гостей: 7

Гости:
» [Ваш IP] 21:11:52
/Статьи
» 185.220.101.7 21:11:49
/Логин
» 47.128.111.110 21:11:28
/Поиск
» 3.147.104.120 21:10:55
/Поиск
» 69.162.124.230 21:09:47
» 198.12.120.99 21:09:40
» 200.193.26.186 21:09:10

» Всего пользователей: 1,688
» Новый пользователь: 464rrad
В базе имеется
аддонов: 951
тем: 137
Иерархия статей
Валидный target="_blank"

На многих сайтах применяется практика открывать внешние ссылки в новом окне. Часто таким образом открываются, например, ссылки на сайт разработчиков или результаты выдачи поисковой системы. Как правило, для этого используется атрибут target тега <a>:

Code
<a href="#" target="_blank">Ссылка откроется в новом окне</a>

Вообще говоря, указывать пользователю, как ему открыть ссылку некрасиво. Гуру юзабилити сайтов в один голос утверждают, что пользователь сам в состоянии решить, как ему открыть ссылку. Он разберется в своих окнах без наших с вами пожеланий по этому поводу. Более того, мы нарушим и работу стандартной кнопки браузера «Назад». Такое грубое вмешательство в привычки, скорее всего вызовет неприязнь!

Кроме того создается плохое впечатление: «Пользователь уходит с сайта! Он может сюда никогда не вернуться! А-а-а! Что делать? Давайте откроем новую ссылку в другом окне! Может быть, когда он посмотрит все, что ему нужно, то закрыв это окно, он опять попадет к нам и уж тогда-то точно станет постоянным посетителем!»

Смысл, надеюсь, ясен — наполняй сайт качественным полезным и интересным контентом и тогда посетители вернуться осознанно и самостоятельно.

Однако кроме моральной есть еще и техническая сторона вопроса — атрибут target отсутствует в спецификации XHTML 1.0 Strict и, соответственно, не пройдет валидацию!

Валидное решение: JavaScript

Если, несмотря на предыдущие абзацы, вы все-таки решили (или вас заставили) открывать страницу в новом окне, давайте хотя бы сделаем это валидно.

Тут на помощь придет JavaScript. Попробуем перехватить событие onclick ссылки и принудительно открыть новое окно с помощью функции window.open(). После чего запретим переход по ссылке в родном окне, указав return false:

Code
<a href="#" onclick="window.open(this.href); return false">Ссылка откроется в новом окне</a>

Проверяем полученное решение: ссылка на главную, должна открыться в новом окне.

Все замечательно. Браузеры уверенно открывают ссылку в новом окне. Валидатор радует нас зеленым сообщением об успехе. Казалось бы можно успокоиться, но не тут-то было! Давайте попробуем поставить в браузере функцию жесткой блокировки всплывающих окон и снова перейти по ссылке!

Более удачное решение

Блокировка всплывающих окон предназначена главным образом для борьбы с надоедливой рекламой. Такая функция есть во всех современных браузерах. Некоторые браузеры даже предлагают разные уровни блокировки. Например в Opera 9+ можно блокировать либо только «нежелательные» окна либо все подряд.

Уж не знаю какой процент пользователей так радикально борется с всплывающими окнами, а только при таких настройках вместо открытия окошка просто появиться маленькая подсказочка «всплывающее окно блокировано». Более того, даже это проявление реакции браузера на щелчок в настройках можно отключить. В этом случае ссылка просто потеряет функциональность: «Я кликаю, а ничего не происходит!»

Если прочитав это, кто-то сказал: «Всем не угодишь! Ну кто же им доктор, что у них все отключено!», то нам с такими не по пути. Для остальных продолжим.

Собственно говоря, ссылка с target="_blank" при заблокированных всплывающих окнах просто откроется в своем родительском окне. Поэтому предыдущее решение можно считать не полным. Более удачный вариант такой:

Code
<a href="#" onclick="return !window.open(this.href)">Ссылка откроется в новом окне</a>

Тут мы воспользовались тем, что функция window.open() возвращает значение true, если окно открыто успешно и false, в противном случае. То есть, в случае, когда ссылка благополучно открылась в новом окне, мы блокируем открытие ссылки в своем родном окне, т.к. return будет !true=false. И наоборот, если окно открыть не удалось, return true позволит ссылке отработать в штатном режиме.

Проверяем улучшенное решение: ссылка на главную, должна открыться в новом окне. Если всплывающие окна запрещены — ссылка откроется в этом же окне.

Выводы

Для открытия ссылки в новом окне вместо невалидного атрибута target рекомендуем применять JavaScript: onclick="return !window.open(this.href)".


Поделиться этой статьей
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:


#1 | jikaka 05.12.2012 17:03
Avatar
Отсутствует
Супер Администратор
Активный
С 26.07.2010 12:10
а если скрипты отключены?

PS: картинки нет, перезагрузи
мысли | фото
#2 | Truth_Explorer 05.12.2012 17:32
Avatar
Отсутствует
Администратор
Активный
С 17.11.2010 13:01
Картинку перезагрузил.

P.S. > По поводу, что отключены скрипты - отдельная тема... Единственное, что хотелось бы отметить, так это то, что 95% пользователей используют настройки браузеров по умолчанию, что подразумевает вклеченность работы скриптов. Если отключены скрипты - то тут уже...

На всех сайтах за малым исключением используются скрипты на стороне пользователя... Тут без этого никак.

Есть и другая сторона: нужен ли "валид" как таковой? - в том числе для пользователей, для которых мы и делаем сайты.

Это справедливо как и положение о том, что надо писать сайты для пользователей, а не для поисковых систем.
#3 | jikaka 06.12.2012 07:00
Avatar
Отсутствует
Супер Администратор
Активный
С 26.07.2010 12:10
думаю валид необязателен, этого пользователи все-равно не видят
мысли | фото
#4 | Chief 29.12.2012 02:31
Avatar
Отсутствует
Пользователь
Активный
С 22.06.2011 15:00
На большинстве западных сайтов широко используется атрибут rel='external'.

А дальше либо с помощью JS присваиваем ссылке атрибут target='_blank':

Код
function externalLinks() {
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
       anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
 }
}

window.onload = externalLinks;




или открываем ссылку в новом окне с помощью jQuery:

Код
$(document).ready(function() {
   $("a[@rel='external']").click(function() {
      window.open(this.href);
      return false;
   });

   $("a[@rel='external nofollow']").click(function() {
      window.open(this.href);
      return false;
   });
});



У богатых людей — большая библиотека. У бедных людей — большой телевизор.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
5 (Отлично!) - 1 Голос

Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.