03 décembre 2013

Outil JavaScript : références non "parsées" du code et Ajax récursif

Dans le cadre de mon activité d'intégrateur HTML, j'ai eu à concevoir une réponse à cette question : comment accéder en JavaScript au code source d'origine d'une page web, avant son analyse par l'agent utilisateur ?

Cette question venait du besoin de distinguer les caractères non ASCII codés tels quels, "é" par exemple, de ceux résultant d'une référence numérique telle que "é", ou d'une référence entité telle que "é".

Je n'ai pas vu de solution avec les propriétés 'innerHTML', 'textContent', 'nodeValue', 'data', qui succèdent chronologiquement à l'analyse, au "parsing" des références. Elles fournissent ainsi la chaîne "é" pour les trois exemples.

La solution que j'ai développée consiste à appeler récursivement la page en Ajax. Une requête dont le 'responseText' va présenter les caractères non ASCII tels quels, distincts des références d'où les caractères ont encore à être analysés. Voici une requête récursive, sans jQuery, avec la variable 'ajax' comme instance de XMLHttpRequest :

ajax.open("GET","#",true);

Un problème est apparu ultérieurement, dans les cas où l'encodage du fichier ne concorde pas avec l'encodage déclaré de la page.

Aucun commentaire: