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

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

База аддонов
База аддонов
11% [1 Голос]

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

Общение
Общение
33% [3 Голосов]

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

Другое
Другое
22% [2 Голосов]

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

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

Alipapa
Offline
· 18.07.2017 22:13
тоже попадалась

Alex
Offline
· 18.07.2017 12:50
встретилась реклама в директе тык ab

jikaka
OfflineAdmin
· 12.07.2017 11:14
Alex, потому что лето...

Alex
Offline
· 11.07.2017 16:32
опять тишина

Alex
Offline
· 26.06.2017 18:41

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

Гости:
» [Ваш IP] 06:37:31
/Статьи
» 46.229.168.72 06:37:31
/Новости
» Google [Bot] 06:37:28
/Поиск
» 217.182.132.188 06:37:28
/Поиск
» Majestic-12 [Bot] 06:37:20
/moddb/error.php
» 164.132.161.24 06:37:18
/Поиск
» 51.255.65.43 06:36:58
/Поиск
» 51.255.65.22 06:36:53
/Поиск
» Yandex [Bot] 06:36:51
/Поиск
» 217.182.132.31 06:36:44
/Поиск
9 - не показано

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

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

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