- Атрибут target
- Target = «_blank» и другие значения атрибута target
- Атрибут target
- Значения target
- _self
- _blank
- _parent
- framename
- Символ подчёркивания
- Опасный target=»_blank»
- href target _blank не работает должным образом — ссылка не открывается на новой вкладке, javascript обрабатывает событие по-другому
- target = _blank не работает с отслеживанием исходящих ссылок GA
- 6 ответов
Атрибут target
По умолчанию, при переходе по ссылке документ открывается в текущем окне или фрейме. При необходимости, это условие может быть изменено атрибутом target тега . Этот атрибут может принимать следующие значения:
_blank — загружает страницу в новое окно браузера;
_self — загружает страницу в текущее окно;
_parent — загружает страницу во фрейм-родитель;
_top — отменяет все фреймы и загружает страницу в полном окне браузера.
В примере 1 показано создание ссылки на сайт, который открывается в новом окне.
Пример 1. Открытие документа в новом окне
Для создания валидного кода атрибут target может использоваться только при переходном >, как показано во всех примерах этой статьи.
Если на сайте используются фреймы, то в качестве значения target можно использовать имя фрейма (пример 2).
Пример 2. Открытие документа во фрейме
Ссылка в примере 2 ведет на сайт htmlbook.ru, открывающийся во фрейме с именем newframe .
Когда у target указано неизвестное значение, например, имя фрейма набрано с ошибкой, то это приводит к тому, что ссылка открывается в новом окне.
Если на веб-странице необходимо сделать, чтобы все ссылки открывались в новом окне, нет необходимости добавлять во все теги target=»_blank» . Код можно сократить, если вначале страницы добавить строку , как показано в примере 3.
Пример 3. Использование тега
Сделать так, чтобы ссылка открывалась в текущем окне, в таком случае можно, если добавить к тегу атрибут target=»_self» , как показано в данном примере.
Источник
Target = «_blank» и другие значения атрибута target
Атрибут target
По умолчанию ссылки открываются в том же окне, в котором они были нажаты. Но иногда нужно, чтобы они открывались в новом окне. Это можно сделать, используя атрибут HTML target blank .
Значения target
Четыре наиболее распространенных значения атрибута target :
_self
Значение _self открывает ссылку в том же окне, в котором она была нажата. Это состояние по умолчанию для всех ссылок, так что это значение используется очень редко.
Единственная ситуация, в которой это может произойти, если в HTML использован тег , который устанавливает определенный способ открытия для всех ссылок. Например, если между тегами добавлен следующий код , нужно использовать target=»_self» , чтобы ссылка открывалась в том же окне.
_blank
Открывает ссылку в новой вкладке или окне. Это определяется локальными настройками пользователя, в большинстве браузеров это новая вкладка. Вы можете подумать, что с помощью данного значения можно реализовать всплывающие рекламные блоки. Но это не так. Чаще всего для этого используется JavaScript , а не HTML .
Это значение атрибута target HTML лучше всего использовать для открытия на новой вкладке ссылок на внешние сайты или на PDF-файлы . Благодаря этому после закрытия этих вкладок пользователь снова попадает на ваш сайт. Но этим не следует злоупотреблять, так как пользователю будет довольно сложно ориентироваться, если каждая ссылка будет открываться на новой вкладке.
_parent
Значение _parent открывает ссылку в родительском фрейме для фрейма, в котором вы находитесь. Это не популярное значение, так как теги для создания фреймов и не поддерживаются в HTML5 . Тем не менее, это значение по-прежнему можно использовать внутри тегов .
Как и _parent , значение _top относится к фреймам. С помощью можно создать фреймы внутри фреймов с многоуровневой иерархией. _top отменяет все установленные фреймы и загружает страницу в отдельное окно браузера.
framename
Символ подчёркивания
Теперь разберемся, для чего используется символ нижнего подчеркивания. Если мы уберем подчеркивание и изменим значение атрибута на target=»blank» , то ссылка будет открываться в новом окне независимо от подчеркивания. Чтобы убедиться в этом, создайте новый HTML-документ и разместите на нем код следующей ссылки:
Затем добавьте в документ код следующей ссылки. А теперь при открытой вкладке с первой ссылкой откройте вторую с атрибутом HTML target blank :
Код второй ссылки:
Вы увидите, что вторая ссылка открылась во вкладке, которая была открыта для предыдущей ссылки, а не в новой ( собственной вкладке ).
Это связано со значением framename , которое мы рассматривали ранее. Поскольку мы начали значение с буквы, “ blank ” интерпретируется как значение типа framename . В случае если framename указан в качестве цели, но такой фрейм не существует, новая вкладка или окно будет создано с использованием этого имени. Таким образом, новое окно, которое мы открыли ранее, стало фреймом с именем “ blank ”.
Чтобы избежать этой проблемы, для ключевых слов значений было добавлено нижнее подчеркивание. Вот откуда взялось _blank .
Источник
Опасный target=»_blank»
Большинство создают внешние ссылки через target=»_blank» и не знают одного интересного нюанса — страница, на которую мы попадем таким образом, получит частичный контроль над ссылающейся на нее страницей через js свойство window.opener.
Через window.opener.location мы сможем сделать редирект на, к примеру, фишинговую страницу. Это своего рода tabnabbing, только более продвинутый. Так как жертва меньше всего ожидает подмены страницы, в открытой ранее, доверенной вкладке браузера.
Проблема далеко не новая, но до сих пор актуальная, и как вижу, не многие о ней знают.
Проблема так же существует в facebook.
Для примера — открываем пост, кликаем по ccылке. Смотрим что случилось с вкладкой, на которой мы открывали данный пост.
Скрыл публикацию в FB ввиду жалоб на надобность восстанавливать доступ к аккаунту после перехода по ссылке (пруф). Можно самому попробовать разместить скрытую публикацию на страницу sli.su/kitten.html либо посмотреть как это работает на хабре
На странице sli.su/kitten.html есть такой код:
Он создает редирект с ранее доверенной страницы. Это происходит потому, что браузеру никто не сообщил, что открываемая страница не должна иметь доступа к родительской вкладке. На момент публикации без проблем отрабатывает в chrome 50, firefox 45, opera 36.
Таким грешат многие сайты, а некоторые, даже не считают это за проблему «на своей стороне» sites.google.com/site/bughunteruniversity/nonvuln/phishing-with-window-opener
Варианты решения проблемы:
1. Добавить в ссылки:
Это так же может быть
2. Открывать все внешние ссылки через свою, промежуточную страницу, на которой должен отработать код:
3. Открывать ссылки в новой вкладке через js:
Источник
href target _blank не работает должным образом — ссылка не открывается на новой вкладке, javascript обрабатывает событие по-другому
У меня проблема с href target _blank на моем веб-сайте.
Я не могу определить, почему ссылка не открывается в новой вкладке, https://miwebstudio.com в разделе: ПОСЛЕДНИЕ ПРОЕКТЫ> Boranito skat и другие, по сути, вместо этого открывают ссылку на той же вкладке . может ли кто-нибудь изучить мой веб-сайт и рассказать мне, что происходит и как это решить? Я думаю, что это должно быть что-то с JS, но я не могу найти проблему в коде Javascript, так как я новичок в javascript и не могу правильно понять, что здесь делает код javascript .
Из того, что я понял из-за предыдущих исследований Google и StackOverflow и наблюдения за поведением, это связано с тем, что javascript по-другому обрабатывает цель события _blank, на самом деле javascript здесь используется для изменения веб-сайта (я имею в виду каждый щелчок, который вы делаете на меню, появляются некоторые div, некоторые div исчезают и обрабатываются 3 классами js), уже изучили файлы JS, щелкнули правой кнопкой мыши, использовали инспектор элементов> элементы> прослушиватели событий> событие щелчка, чтобы увидеть, какие файлы JS находятся срабатывает при нажатии .
Как видите, при выполнении события click выполняются два архива javascript:
Так что, по-видимому, оба класса javascript обрабатывают события: по щелчку, но поскольку я новичок в javascript, я не могу понять, как справиться с этим, или даже понять, что JS делает с веб-сайтом (я просто возился с данным шаблоном, чтобы попытаться понять это и лучше настроить (и, следовательно, заставить целевой _blank работать должным образом (как показано ранее, при нажатии на ссылку он открывает ссылку на той же странице), поэтому я прихожу сюда для некоторой поддержки с вашей стороны
Вот фрагмент кода, чтобы вы могли легко найти код на моем веб-сайте при использовании обозревателя кода в Chrome:
Однако я оставлю здесь исходные файлы javascript, поскольку меня просят предоставить здесь все возможные подробности, чтобы пользователям не понадобился доступ к моему веб-сайту мой веб-сайт, вот все 3 класса javascript, обрабатывающие все события шаблона, которые я не знаю, что они делают: (поскольку я не могу прикрепить исходный код классов javascript, я прикреплю ссылку для каждого файла js, чтобы вы могли его проверить, спасибо вперед .
Источник
target = _blank не работает с отслеживанием исходящих ссылок GA
Я хочу отслеживать клики по исходящим ссылкам и реализовал следующий код:
GA-код
Ссылки
целевой = _blank
Я добавляю атрибут target=_blank через jQuery в зависимости от того, отмечен ли посетитель веб-сайта флажок или нет (выбор сохраняется в печенье). Однако, если я решу открыть исходящую ссылку в новом окне, она не будет работать. При установке флажка он правильно добавляет целевой атрибут к ссылке, но когда я нажимаю на ссылку, он открывается в том же окне.
Ссылки с целевым атрибутом
6 ответов
Наличие target = «_ blank» в ссылке ничего не изменит, если вы измените URL страницы через JavaScript, изменив document.location.
Однако вам нужно использовать hitCallback только тогда, когда вы отслеживаете внутреннюю ссылку. Если у вас есть внешняя ссылка, и поэтому target = «_ blank», ваша исходная вкладка остается открытой, и событие отслеживания ga завершится в обычном режиме — вам не нужно беспокоиться о том, чтобы убедиться, что оно завершится перед загрузкой новой страницы.
Поэтому я думаю, что вы захотите изменить свой обработчик кликов следующим образом:
И когда вы прикрепляете это как обработчик кликов
Более конкретные примеры:
Просто хочу поддержать ответ Some Guy In Winnipeg выше. Не позволяйте мне комментировать, но его решение работает!
Предлагаемый Google код (не работает, чтобы открыть ссылку в новой вкладке):
Однако, если вы измените «document.location = url;» to «document.location = href;» и в теге ссылки измените «вернуть ложь»; «вернуть истину»; и добавьте «target =» _ blank », ссылка откроется на новой вкладке и будет отслеживать исходящую ссылку.
Итак, код, который работает:
Это сделает все ссылки открытыми в новом окне:
Я просто изменяю document.location = url; на window.open(url); код из https://support.google.com/analytics/answer/1136920
вы также можете изменить имя функции, и иметь одно для ссылок на новые окна и одно для ссылок на те же окна. Это было бы изменить первую строку на что-то вроде:
И тогда ссылка будет
Нашли решение (по состоянию на 6 февраля 2016 г.)
Тогда сделайте так, чтобы ваша ссылка выглядела так .
DRY — отслеживать все привязки с помощью класса tracked . Обратите внимание, что этот код чувствителен к блокировщикам всплывающих окон. Вызов window.open должен находиться за пределами ga звоните.
Надеюсь, что на отслеживание событий это никак не повлияет.
Источник