Tag

validation

Browsing

J’ai eu besoin récemment de pouvoir contrôler les attributs des liens qui s’affichaient sur le blog et plus spécialement ceux qui sont fournis par des sites tiers (sponsors etc).

PHP : script pour retirer les attributs des tags HTML photo

Et bien figurez-vous que certains liens ne sont pas du tout valides : leurs liens ont des attributs obsolètes ou inadaptés avec comme des target="_blank".

Tout cela brise la navigation en fenêtres/onglets supplémentaires, et supprime la fonctionnalité du bouton back pour revenir à la page précédente.

Du coup, j’ai retroussé un peu mes manches pour remédier à ce problème.

Cela m’a donné ce script, qui me permet de dresser la liste des attributs à filtrer dans un code source donné.

Sky Cleanup Attributes

Voici la fonction principale, sobrement appelée Sky Cleanup Attributes : elle permet de filtrer des attributs définis dans une liste. Il suffit de passer le code dans une variable et la fonction filtre et retourne le code final, sans les attributs gênants.

Le problème : l’attribut HTML frameborder

HTML5-logo

Si vous obtenez l’erreur :
“The frameborder attribute on the iframe element is obsolete. Use CSS instead.”

sur le validateur HTML5 du W3C, c’est que le code de votre page HTML5 contient un élément <iframe> avec un attribut frameborder comme dans l’exemple suivant :

<iframe frameborder="0" />

Solution CSS: la propriété border

Comme l’attribut frameborder n’est plus présent dans HTML5, il faut utiliser la propriété CSS border en CSS à la place de l’attribut HTML frameborder:

<iframe style="border: 0;" />

Solution HTML : l’attribut seamless

Avec HTML5, il est possible de résoudre le problème en ajoutant l’attribut seamless à l’iframe:

<iframe seamless />

L’apparence du texte et des éléments de présentation de la page doivent être gérés par CSS et non par le code HTML, c’est plus propre et surtout plus simple à gérer.

Le problème : l’attribut HTML scrolling

HTML5-logo

Si, au détour d’une validation du code HTML5 de votre page, vous obtenez l’erreur suivante:

“The scrolling attribute on the iframe element is obsolete. Use CSS instead”

… c’est que le code de votre page HTML5 contient un élément <iframe> avec un attribut scrolling comme dans le code suivant :

<iframe scrolling="no" />

La solution CSS : la propriété overflow

Comme l’attribut scrolling ne fait plus partie des spécifications HTML5, il faut utiliser CSS à la place et utiliser la propriété overflow:

<iframe style="overflow: hidden;" />

L’apparence du texte et des éléments de présentation de la page doivent être gérés par CSS et non par le code HTML.

Le problème : le code des vidéos n’est pas valide en HTML5

Voici ce que le code oEmbed de WordPress donne par défaut avec un lien Youtube :

<iframe src="https://www.youtube.com/embed/Gvh2Zo7UL6E?fs=1&feature=oembed" width="660" height="371" frameborder="0" allowfullscreen="allowfullscreen"></iframe>

Résultat:

YouTube

By loading the video, you agree to YouTube's privacy policy.
Learn more

Load video

Or le petit problème, c’est que tout cela n’est pas vraiment valide au niveau W3C et je commence à me lasser de voir ces erreurs de validation sur toutes les pages du site avec des vidéos :

Erreur 1 : Attribute allowfullscreen not allowed on element iframe at this point.
Erreur 2 : The frameborder attribute on the iframe element is obsolete. Use CSS instead.

La solution : filtrer le rendu oEmbed de WordPress pour purifier le code

Voici donc la solution que j’ai mise en place sur le site : je filtre le code oEmbed de WordPress de manière à retirer le tag allowfullscreen qui n’a rien à faire là et à supprimer l’attribut frameborder, que je remplace par un style="border: none".

Editez le fichier functions.php de votre thème et ajoutez-y cette fonction:

<?php
/*
|-----------------------------------------------------------------------
| Sky oEmbed Filter by Matt - www.skyminds.net
|-----------------------------------------------------------------------
|
| The sky_oembed_filter() function attempts to validate WordPress 
| video oEmbeds for HTML5.
| $return is the normal HTML that the oEmbed process would return. 
| $data is the data received from the oEmbed call, in an object format. 
| $url is the original URL being queried for oEmbed info. 
|
*/
add_filter('oembed_dataparse', 'sky_oembed_filter', 90, 3 );
function sky_oembed_filter( $return, $data, $url ) {
 	$return = str_replace('frameborder="0" allowfullscreen', 'style="border: none"', $return);
	return $return;
}

Notez que WordPress cache les résultats oEmbed dans la table postmeta donc après avoir installé ce code et si vous voulez vérifier que cela fonctionne, éditez un article pour que le postmeta se mette à jour.

Voilà, vos pages avec vidéos YouTube devraient maitenant être valides.

Sur votre site ou blog, vous avez peut-être ajouté le widget ou bouton +1 de Google+, le réseau social de Google. Or le petit problème, c’est que le code fourni empêche la bonne validation du document.

Voici le code fourni par Google :

<a title="Google+" href="https://plus.google.com/114535411372700844744" rel="publisher nofollow">Google+</a>

et voici l’erreur renvoyée par le validateur W3C :

Keyword publisher is not registered

HTML5 étant toujours en cours de réalisation, les valeurs de la balise rel sont assez restreintes et on ne peut pas mettre tout ce que l’on veut sans déclencher l’erreur.

La solution est toute simple : il faut ajouter la valeur du rel en argument dans le lien, comme ceci :

<a title="Google+" href="https://plus.google.com/114535411372700844744?rel=publisher" rel="nofollow">Google+</a>

Et voilà, plus d’erreur lors de la validation.

Cette semaine nous avons la joie et le bonheur de procéder à la validation du niveau A2 de nos troisièmes. D’ailleurs cette année, c’est moi qui m’y suis collé : fouille du web pour trouver un enregistrement potable avec questions à la clé. J’ai opté pour une compréhension orale sur l’immigration aux USA. Une demi-heure et quatre exercices plus tard (“circle the right answer”, “find the corresponding picture”… cette consigne-là j’ai dû l’expliquer au moins *cinq fois* !), ils m’annonçaient que :

– Rhôlala, mais comment c’était facile m’sieur !!!

Aujourd’hui, séance Groupe de Référence (GR) à l’IUFM. Au programme : présenter une activité qui a bien marché avec nos élèves. Arthur prévient notre formateur qu’il sera absent l’après-midi pour cause de conseil de classe. La réponse fuse : “bon et bien Arthur, vous passerez en premier !”. Vraiment au taquet notre formateur aujourd’hui ^_^. Nous avons fait un bref retour sur les soutenances de mémoire : tout notre groupe a été validé, ce qui n’est pas le cas dans les autres disciplines (Maths, Lettres, Histoire-Géographie) qui ont tous 3 ou 4 stagiaires recalés. Toujours bon à savoir. Et l’on a appris que Woo-Hoo est désormais out. Poor guy. Nous avons ensuite dû signer une demande d’autorisation de publication de nos mémoires sur l’intranet de l’IUFM, que la plupart ont refusé. Le reste de la journée a été consacré à la présentation de nos activités – j’ai présenté ma Webquest, tranquille.

Restaurant avec Magali, Arthur et Arnaud – comme des princes – avant de retourner pour quelques heures de folie. Notre RGR nous présente alors un extrait vidéo : “le drill en action”. Il s’agit d’un professeur qui montre comment ses élèves arrivent à communiquer avec les drills : chaque élément linguistique forme une brique qui peut changer de place selon les formes des phrases. Et là le choc : le film date de la fin des années 80 (coiffures, lunettes, vêtements… fou-rire assuré !) et la classe est impressionnante : 18 élèves, pas un qui bouge, tout le monde participe en théatralisant avec des gestes, intonation et accent parfaits. A croire qu’ils ont fait le Cours Florent. Et ils sont en 5ème. Des premières ou terminales d’aujourd’hui seraient incapables d’une telle prouesse, sérieusement. Morceaux choisis, énoncés par le prof :

Qui gagne en fluidité perd en timidité !
Le message va au-delà de la bouche, plus loin que l’oreille !
If you sugar the drill, they will swallow the pill
Au commencement était le drill en action… instrument docile d’expression personnelle et originale !

Dommage que ce soit décontextualisé parce qu’il est vraiment impressionnant de voir ce que ces élèves étaient capables de dire, surtout avec l’accent, les question-tags, l’aisance face à la classe approchant l’absence d’inhibition. Cela laisse rêveur tellement cela semble utopique dans nos situations de classe d’aujourd’hui. Je m’en ferais bien une cassette tiens !

JokerCe matin a eu lieu la soutenance de mon mémoire professionnel. Réveillé bien avant mon réveil, j’ai eu le temps de bien me préparer psychologiquement, ce qui fait que j’étais frais et dispo, pas stressé pour deux sous, devant la porte de la salle du jury avec quasiment une heure d’avance. J’ai discuté avec la candidate précédente afin de recueillir ses impressions. Visiblement elle était assez stressée, attendant anxieusement le verdict du jury… favorable pour elle. Tant mieux :-)

La porte s’ouvre, mon tuteur arrive juste à l’heure et nous entrons tous les deux dans la salle d’examen. Mon responsable de groupe de référence m’indique où m’installer : je fais face au 3 membres du jury, composé de deux enseignants d’anglais de niveau collège (un homme et une femme) et de mon RGR. Mon tuteur se trouve à ma gauche, au coin de ma vision périphérique. On m’annonce alors que je dispose de 20 minutes et que le chrono est lancé. Ok !

J’expose alors mon plan en 3 parties. La première partie, destinée à justifier le choix du mémoire, a été relativement courte et j’ai senti mon tuteur tendu pendant quelques instants. Les deux parties suivantes ont été plus relax parce qu’elles formaient véritablement ce que j’avais testé dans mes classes. J’étais assez content de moi à la fin de mon exposé qui, relativement clair, a permis de désamorcer les éventuelles questions assassines de l’entretien. L’exposé a duré 15-20 minutes je pense. Au niveau de l’entretien, j’ai trouvé la dame bienveillante, cherchant quelques précisions sur le déroulement de mes séances/séquences. Le monsieur s’est ingénié à chercher la petite bête comme – par exemple – le point d’interrogation manquant à la fin d’une phrase à la page 27. Surréaliste. Il a dû m’en faire 3 ou 4 des réflexions comme celles-là : maladroit ici, trop général là… Et là-dessus, retournement de situation, il conclut l’entretien par des éloges sur mon mémoire : bien écrit, dynamique, on voit la progression et la démarche de recherche qui fait sens, vision à long-terme… j’avoue que j’en suis resté pantois – et content ^_^

On nous demande de sortir de la salle le temps que le jury rende son verdict. Je finis de signer mon dossier. Mon tuteur ne pipe mot mais je suis très serein, tout décontracté. Arnaud vient aux nouvelles, il est le prochain à passer. 15 minutes plus tard, le verdict tombe : mémoire et soutenance validés. Mon tuteur s’avance alors vers moi et me serre la main : “bienvenue dans la boîte !”. I made it baby ! ^_^