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

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

База аддонов
База аддонов
32% [6 Голосов]

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

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

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

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

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

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

Vova
Offline
· 14.11.2018 12:42
Zaxap, на основе Hetzner Cloud через их API: https://hetzner.a.
..loud/login

Polarfox
OfflineAdmin
· 11.11.2018 14:42
no comments

Vveb--ws
Offline
· 10.11.2018 15:24
зачем эти заморочки с безопасностью?

Rush
OfflineAdmin
· 08.11.2018 08:33
Безопасность обычно заключается в том чтобы предотвратить подмену этого айди на клиенте, привязать его к айпи, юзер агенту и прочей фигне

Rush
OfflineAdmin
· 08.11.2018 08:32
Сессию украсть или подменить нельзя, она хранится на сервере. Можно украсть кукисы. Айди сессии это всего лишь айди, он не может быть лучше или хуже чем другой айди)

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

Гости:
» [Ваш IP] 14:23:34
/Статьи
» 91.121.112.181 14:23:27
/Логин
» 104.144.6.65 14:22:48
/Статьи
» Yandex [Bot] 14:20:46
/Поиск
» 46.173.211.148 14:20:39
/Контакты
» Yandex [Bot] 14:20:38
/Поиск
» 59.58.132.143 14:20:36
» Yandex [Bot] 14:20:34
/Поиск
» Yandex [Bot] 14:20:18
/Поиск
» 69.162.124.235 14:19:50

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

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

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