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

Голосование
Что вас интересует на нашем сайте больше всего?

База аддонов
База аддонов
21% [3 Голосов]

Форум, поиск ответов
Форум, поиск ответов
21% [3 Голосов]

Общение
Общение
36% [5 Голосов]

Новости
Новости
0% [0 Голосов]

Другое
Другое
21% [3 Голосов]

Голосов: 14
Вы должны авторизироваться, чтобы голосовать.
Начат: 16.05.2017 07:06

Архив опросов
Случайная тема
Друзья проекта
Unlogic W0rst Lab
Система Smart для PHP-Fusion
Миничат
Только пользователи могут отправлять сообщения.

Polarfox
OfflineAdmin
· 19.05.2018 15:10
Какой дикий хаос, до сих пор 9,0 скачать или вообще 7

ovas
Offline
· 19.05.2018 12:03
Пионеров Andromeda-9.0.3 с праздником!! az

Polarfox
OfflineAdmin
· 18.05.2018 19:05
Зато понятно как оно работает и все просто.

ovas
Offline
· 18.05.2018 16:53
Девятка- это на 150% китайский продукт. Но понятен, сердит и можно его править.

Rush
OfflineAdmin
· 18.05.2018 07:58
Для ковыряния в классах отлично подходит symfony, а 9ка - это скорее набор bad practice, типо как не надо делать и за что надо бить по рукам железной линейкой

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

Гости:
» [Ваш IP] 08:18:09
/Статьи
» Yandex [Bot] 08:16:52
/moddb/error.php
» 134.119.216.167 08:16:50
/Логин
» 223.226.93.78 08:16:20

» Всего пользователей: 1,346
» Новый пользователь: KYM
В базе имеется
аддонов: 950
тем: 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 Голос

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

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