Quand on veut ouvrir un lien dans une nouvelle fenêtre, la manière habituelle est d'ajouter target="_blank" après le lien. Il n'y a pas de problème quand on utilise le DOCTYPE transitionnel (xh tml1-transitional. dtd), mais quand on utilise. le DOCTYPE strict (xhtml1-strict.dtd), cette méthode échouera à la vérification du W3C et le message d'erreur suivant apparaîtra :
"il n'y a pas de cible d'attribut pour cet élément (dans cette version HTML)"
Il s'avère que sous le DOCTYPE strict de HTML4.01/XHTML1.0/XHTML1.1, target="_blank", target="_self" et d'autres syntaxes ne sont pas valides, et nous ne pouvons les implémenter que via JavaScript.
Un ami a demandé pourquoi target="_blank" n'est pas autorisé à être utilisé ? Cet attribut est très pratique. Haha, je ne sais pas ce que pensent les experts du W3C. Pour autant que je sache, il s’agit principalement de « facilité d’utilisation et de convivialité », car les étrangers pensent qu’il est impoli d’ouvrir une nouvelle fenêtre sans le consentement de l’utilisateur ou sans invite claire. de. Que cette annulation soit raisonnable ou non, examinons la solution.
attribut rel
HTML4.0 ajoute un nouvel attribut : rel. Cet attribut est utilisé pour décrire la relation entre le lien et la page contenant le lien, ainsi que la cible du lien. rel a de nombreuses valeurs d'attribut, telles que suivant, précédent, chapitre, section, etc. Ce que nous voulons utiliser, c'est l'attribut rel="externa l". Le code original était écrit comme ceci :
<a href="document.html" target="_blank">Ouvrir une nouvelle fenêtre</a>
Maintenant, cela s'écrira ainsi :
<a href="document.html" rel="external">Ouvrir une nouvelle fenêtre</a>
Il s'agit d'une méthode stricte. Bien entendu, il doit être combiné avec un javascript pour être efficace.
Le code JS complet de javascript est le suivant :
fonction liens externes() {
if (!document.getElementsByTagName) renvoie ;
var ancres = document.getElementsByTagName("a");
pour (var i=0; i<anchors.length; i++) {
var ancre = ancres[i];
si (anchor.getAttribute("href") &&
Anchor.getAttribute("rel") == "externe")
ancre.target = "_blank" ;
}
}
window.onload = liens externes ;
Vous pouvez l'enregistrer en tant que fichier .js (tel que external.js) et l'appeler via la méthode de connexion externe :
<script type="text/javascript" src="external.js"></script>
C'est ça.
Enfin, je voudrais ajouter que le target="new" utilisé par mon site Web est autorisé sous le DOCTYPE transitoire, mais il ne répond pas à la norme stricte. J'utiliserai le mode strict dans la prochaine révision et changerai tous les target="new" en rel="external".