Jump to content
  • 0

target="_blank" или чем его заменить?


Titan
 Share

Question

18 answers to this question

Recommended Posts

  • 0

столкнулся с вышеуказанной проблемой вот какие есть варианты:

<a href="document.html" rel="external">в новое окно</a>

________________________________________________________________

function externalLinks() {
if (!document.getElementsByTagName) return;
var anchors = document.getElementsByTagName("a");
for (var i=0; i < anchors.length; i++) {
if (anchors[i].getAttribute("href") &&

anchors[i].getAttribute("rel") == "external") {
anchors[i].target = "_blank";
}
}
}
window.onload = externalLinks;

________________________________________________________________

<a href="link" onclick=?this.target=?_blank??>

________________________________________________________________

]<a href="link" onclick=?return !window.open(this.href)?>

Link to comment
Share on other sites

  • 0
столкнулся с вышеуказанной проблемой вот какие есть варианты:

Плохие варианты. rel="external" работает не во всех браузерах, а JavaScript пользователь имеет право отключить.

Пока железно работает только target.

Интересно, чем мотивирует W3C отказ от target?

Edited by Webr
Link to comment
Share on other sites

  • 0
Плохие варианты. rel="external" работает не во всех браузерах, а JavaScript пользователь имеет право отключить.

Пока железно работает только target.

Интересно, чем мотивирует W3C отказ от target?

Я слушал гипотезу, что это был удар по IE ))) Ибо все остальные браузеры были многозакладочные, дескать "для чего человека заставлять смотреть в новом окне, когда он хочет в новой вкладке...". Сейчас конечно уже не актуально. И _blank уже многими, если не всеми, отрабатывается в новую закладку.

Link to comment
Share on other sites

  • 0

Какие были многозакладочные браузеры в 1999 году? Фантазия без границ.

Интересно, чем мотивирует W3C отказ от target?

Тем что в Strict нет фреймов, а target определен в разделе фреймов и в первую очередь для них, вот его и вымели вместе с фреймами.

В HTML5 его вернули, можно поставить <!DOCTYPE html> и спокойно пользоваться.

Link to comment
Share on other sites

  • 0
Какие были многозакладочные браузеры в 1999 году? Фантазия без границ.

Тем что в Strict нет фреймов, а target определен в разделе фреймов и в первую очередь для них, вот его и вымели вместе с фреймами.

В HTML5 его вернули, можно поставить <!DOCTYPE html> и спокойно пользоваться.

Description

The objective of this technique is to avoid confusion that may be caused by the appearance of new windows that were not requested by the user. Suddenly opening new windows can disorientate or be missed completely by some users. In HTML 4.01 Transitional and XHTML 1.0 Transitional, the target attribute can be used to open a new window, instead of automatic pop-ups. (The target attribute is deleted from HTML 4.01 Strict and XHTML 1.0 Strict.) Note that not using the target allows the user to decide whether a new window should be opened or not. Use of the target attribute provides an unambiguously machine-readable indication that a new window will open. User agents can inform the user, and can also be configured not to open the new window. For those not using assistive technology, the indication would also be available from the link text.

w3.org

в какой фрейм, интересно, будет грузиться _blank при фреймсете?

Link to comment
Share on other sites

  • 0
not using the target allows the user to decide whether a new window should be opened or not

С одной стороны, я их понимаю, но с другой:

1. Если пользователь хочет, чтобы по каждому тычку открывалось новое окно/вкладка, то ему надоест каждый раз помнить, что нужно нажать Shift или вызвать контекстное меню. Как вариант, можно напичкать страницу Java-скриптами, управляемыми соответствующим параметром настройки сайта.

2. Если пользователь не искушён в вопросах браузинга (это скорее правило, чем исключение), и не знает как отключать JavaScript, то я могу подставить что атрибут target, что функцию на JS - это будет точно такое же насильное навязывание поведения сайта.

Так что, поведение W3C нелогично. Хорошо построенный сайт будет в любом случае хорошим и учитывает потребности пользователей, а плохо построенный пользователи посещать не будут.

Следующим шагом будет, видимо, удаление window.open из JS.

Кстати, указание атрибута target у тега "a" было единственным средством отделить окна, появляющиеся по добровольному тычку мышью от назойливых popup windows, вызываемых спамерами через JavaScript.

Edited by Webr
Link to comment
Share on other sites

  • 0
в какой фрейм, интересно, будет грузиться _blank при фреймсете?

в первую очередь != только

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

Это говорит только о том, что target="_blank" нужен, его удаление было непродуманным шагом, его эмуляция с помощью JS ухудшает доступность и предсказуемость страницы. Приведенная ссылка на WCAG 2.0 и наличие target="_blank" в HTML5 только подтверждают это.

Что касается того почему W3C убрали target, то здесь я вижу две причины:

1. без фреймов область применения target сильно уменьшилась

2. считали, что пользователь должен решать где открывать страницу (может и правильно, но вебмастера саботировали идею с помощью JS)

Edited by Jenek
Link to comment
Share on other sites

  • 0
1. без фреймов область применения target сильно уменьшилась

Всетке странно, фреймы, я понимаю _top, _self понимаю, но при чем тут _blank?

Давайте ка покажем страницу, открытую _blank из фрема или из любого другого доктайпа или без оного вообще, и попросим человека, простого пользователя, не видящего всего процесса, установить, из frameset эта страница была открыта через _blank или нет.

Исходя из этого, я не могу себе представить, как серьезные челы, разрабатывающие спецификацию, вот так вот встали на собрании и сказали что target="_blank" более нам не нужен, так как фреймы не есть strict. Или же что "мы не можем дать в спецификации на разделение target="_blank" от всех остальных target имеющих отношение только к фреймсетам, даже несмотря на то, что через несколько лет мы сможем сказать что onClick - невалидно, а onclick - валидно".

Link to comment
Share on other sites

  • 0

Как по мне, target _blank - рудимент.

Лично у меня изменился стиль браузинга с введением табов в браузерах.

Я 95% ссылок открываю в новом табе. Кнопкой "бэк" пользуюсь в 5% случаев.

Если будет возле ссылки подсказка, что данная информация будет открыта на другом ресурсе, то это хорошо, но не обязательно, я и так смотрю, на какой сайт или на какой адрес меня собираются послать.

Link to comment
Share on other sites

  • 0

Это еще раз доказывает, что проще плюнуть нафиг на стандарты. Потому, что я недавно занимался вычищением этих самых target="_blank" из ссылок. А теперь они все откатили и сказали "так можно". Ппц. Но опять приделывать я их не собираюсь. Мне кажется правильней не использовать ссылки в новом окне. Пусть пользователь сам выбирает.

Link to comment
Share on other sites

  • 0

Возможно, дело еще в том, что в эпоху взлета XHTML1 (когда будущее стандартов казалось четким и однозначным) роль target-а ссылок планировалось возложить на CSS (что позволило бы учесть и табы). Но судьба CSS (даже 2-го уровня, не говоря уже о 3-м) сложилась так, как сложилась...

Link to comment
Share on other sites

  • 0
Таргет либо запрещ?н напрямую, либо не описан в спецификациях - не помню. (не путаю?)

Я тоже так думал до недавнего времени. И был приятно поражен, когда страницы с таким вот доктайпом

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">

чудесно проходят валидацию с target="_blank" :lol:

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy