Je sais _blank
ouvre un nouvel onglet lorsqu'il est utilisé avec la balise d'ancrage et il existe également des cibles auto-définies que j'utilise lorsque je me sers de framesets, mais j'aimerais connaître la différence entre _parent
, _self
y _top
.
Réponses
Trop de publicités?Bien que ces réponses soient bonnes, je ne pense pas qu'elles répondent pleinement à la question.
L'attribut target d'une balise d'ancrage indique au navigateur la cible de la destination de l'ancre. Elles ont été initialement créées afin de manipuler et de diriger les ancres vers le système de cadres du document. C'était bien avant que les CSS ne viennent en aide aux développeurs HTML.
Alors que target="_self"
est utilisé par défaut par le navigateur et la cible la plus courante est target="_blank"
qui ouvre l'ancre dans une nouvelle fenêtre (qui a été redirigée vers les onglets par les paramètres du navigateur habituellement). Le site "_parent"
, "_top"
y framename
restent un mystère pour ceux qui ne sont pas familiers avec l'époque où la construction de sites iframe était la tendance.
target="_self"
Cela ouvre une ancre dans le même cadre. Ce qui est déroutant, c'est qu'étant donné que nous n'écrivons généralement plus dans des cadres (et que la balise frame
y frameset
sont obsolètes en HTML5), les gens supposent qu'il s'agit d'une fonction de la même fenêtre. Au contraire, si cette ancre était imbriquée dans des cadres, elle s'ouvrirait dans une sorte de mode "sandbox", c'est-à-dire uniquement dans ce cadre.
target="_parent"
Ouvrira le niveau supérieur suivant d'un cadre s'ils sont imbriqués l'un dans l'autre.
target="_top"
Il sort de tous les cadres dans lesquels il est imbriqué et ouvre le lien en tant que document supérieur dans la fenêtre du navigateur.
target="framename
Cette fonction, initialement dépréciée, a été réintroduite dans HTML5. Elle permet de cibler le cadre exact en question. Bien que le name
était la méthode appropriée ; cette méthode a été remplacée par l'utilisation de l'option id
étiquette d'identification.
<!--Example:-->
<html>
<head>
</head>
<body>
<iframe src="url1" name="A"><p> This my first iframe</p></iframe>
<iframe src="url2" name="B"><p> This my second iframe</p></iframe>
<iframe src="url3" name="C"><p> This my third iframe</p></iframe>
<a href="url4" target="B"></a>
</body>
</html>
Vous trouverez ci-dessous une image montrant des cadres imbriqués et l'effet de différentes valeurs cibles, suivie d'une explication de l'image.
Imaginons une page web contenant 3 éléments imbriqués <iframe>
alias "frame"/"frameset". Donc :
- la page web/navigateur la plus extérieure est le contexte de départ
- la page web la plus à l'extérieur est le parent du cadre 3
- le cadre 3 est le parent du cadre 2
- le cadre 2 est le parent du cadre 1
- le cadre 1 est le cadre le plus intérieur
Les attributs de la cible ont alors ces effets :
- Si la trame 1 a un lien avec
target="_self"
le lien cible la trame 1 (c'est-à-dire les cibles du lien le cadre contenant le lien (c'est-à-dire qu'il se cible lui-même)) - Si la trame 1 a un lien avec
target="_parent"
le lien cible la trame 2 (c'est-à-dire les cibles de lien le cadre parent ) - Si la trame 1 a un lien avec
target="_top"
le lien vise la page web initiale (c'est-à-dire que le lien vise le cadre le plus haut/le plus extérieur ; (dans ce cas, le lien saute la trame 3 du grand-parent))- Si le cadre 2 a un lien avec
target="_top"
le lien également cible la page web initiale (c'est-à-dire qu'une fois de plus, le lien cible la page web initiale). cadre supérieur/extérieur )
- Si le cadre 2 a un lien avec
- Si l'un de ces cadres a un lien avec
target="_blank"
le lien cible un contexte auxiliaire de navigation , alias un "nouvelle fenêtre" / "nouvel onglet".- Cela s'applique au cadre 3, au cadre 2, au cadre 1 et à la page web la plus extérieure. Attention au "tabnabbing" en cas de
target="_blank"
; utiliser lerel="noopener"
attribut
- Cela s'applique au cadre 3, au cadre 2, au cadre 1 et à la page web la plus extérieure. Attention au "tabnabbing" en cas de
Section 6.16 Noms des cibles du cadre dans la spécification HTML 4.01 définit les significations, mais elle est en partie dépassée. Elle fait référence à "Windows", alors que les ébauches HTML5 parlent de manière plus réaliste de "contextes de navigation", puisque les navigateurs modernes utilisent souvent des onglets au lieu de Windows dans ce contexte.
En bref, _self
est la valeur par défaut (le contexte de navigation actuel, c'est-à-dire la fenêtre ou l'onglet en cours), de sorte qu'il n'est utile que pour remplacer une valeur <base target=...>
réglage. La valeur _parent
se réfère au jeu de cadres qui est le parent du cadre actuel, alors que _top
"sort de tous les cadres" et ouvre le document lié dans toute la fenêtre du navigateur.
target="_blank"
Ouvre une nouvelle fenêtre et affiche les données correspondantes.
target="_self"
Ouvre la fenêtre dans le même cadre, c'est-à-dire la fenêtre existante elle-même.
target="_top"
Ouvre le document lié dans le corps complet de la fenêtre.
target="_parent"
Ouvre les données dans la taille de la fenêtre parent.