Cet article fait référence aux articles suivants :
La manière habituelle d'ouvrir un lien dans une nouvelle fenêtre est d'ajouter target="_blank" après le lien. Il n'y a pas de problème lorsque l'on utilise le DOCTYPE transitionnel (xh tml1-transitional. dtd), mais lorsque l'on utilise le. strict DOCTYPE (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 d'attribut cible pour cet élément (dans cette version HTML)"
Il s'avère que sous le strict DOCTYPE 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.
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 :
Ouvrir une nouvelle fenêtreMaintenant, écrivez-le comme ceci :
Ouvrir une nouvelle fenêtreIl s'agit d'une méthode conforme à la norme stricte. Bien entendu, il doit être associé à un javascript pour être efficace.
Le code JS complet est le suivant :
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;
Vous pouvez l'enregistrer en tant que fichier .js (tel que external.js), puis l'appeler via la méthode de connexion externe :
C'est tout.
Enfin, le target="new" utilisé par mon site Web est autorisé sous le DOCTYPE transitionnel, 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".