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

Голосование
Тип Вашего интернет-проекта?

Новостной ресурс
Новостной ресурс
0% [0 Голосов]

Тематический/информационный ресурс
Тематический/информационный ресурс
18% [2 Голосов]

Социальная сеть/блог
Социальная сеть/блог
9% [1 Голос]

Корпоративный портал
Корпоративный портал
0% [0 Голосов]

Интернет-магазин
Интернет-магазин
0% [0 Голосов]

Промосайт
Промосайт
9% [1 Голос]

У меня несколько сайтов
У меня несколько сайтов
36% [4 Голосов]

У меня вообще нет сайта
У меня вообще нет сайта
0% [0 Голосов]

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

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

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

jikaka
OfflineAdmin
· 26.04.2017 15:53
ab

Warhangel
OfflineAdmin
· 25.04.2017 23:30
ммм вообще надо организовать раздел проверенных сервисов

Warhangel
OfflineAdmin
· 25.04.2017 23:27
так вроде в разделе рекламы ag

Alex
Offline
· 25.04.2017 18:23
Костя дай права удалять темы и банить ботов. подчищать буду то что насрут

jikaka
OfflineAdmin
· 20.04.2017 06:24
Polarfox, шляпа там

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

Гости:
» [Ваш IP] 19:45:28
/Статьи
» 51.255.65.14 19:45:16
/Поиск
» 46.229.168.65 19:45:16
/moddb/error.php
» 51.255.65.44 19:45:07
/Поиск
» 217.182.132.37 19:45:03
/Поиск
» 51.255.65.38 19:44:51
/Поиск
» 217.182.132.193 19:44:48
/Поиск
» 217.182.132.157 19:44:48
/Поиск
» 51.255.65.8 19:44:17
/Поиск
» 46.229.168.74 19:44:05
/Поиск
11 - не показано

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

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

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