Question

J'ai besoin d'un moyen d'identifier certaines chaînes dans le balisage HTML. Je sais ce que les chaînes sont, mais il est possible qu'ils pourraient être sous-chaînes d'autres chaînes dans le document. Pour les trouver, je sortie un délimiteur spécial (actuellement à l'aide \032). Sur chargement de la page, nous passons par le HTML et enregistrer l'emplacement des chaînes, et retirez le delimiter.

Malheureusement, la plupart des navigateurs montrent le caractère délimiteur jusqu'à ce que nous pouvons trouver et supprimer tous. Je voudrais éviter que, si possible. Y at-il un caractère ou une chaîne qui sera conservée dans le contenu HTML (donc un commentaire coutume de travail), mais ne sera pas en visible pour l'utilisateur? Il doit aussi être quelque chose qui est assez peu probable à apparaître à côté d'une chaîne, donc quelque chose comme   ne fonctionnerait pas non plus.

EDIT:. Désolé, j'ai oublié de mentionner que les chaînes seront dans les attributs, de sorte que toute sorte de balise ne fonctionnera pas

Était-ce utile?

La solution

‌ - antiliant sans chasse (voir http://htmlhelp.org/ référence / HTML40 / entités / special.html )

Au hasard que cela apparaît déjà dans votre texte, double vers le haut (par exemple: ‌‌mytext‌‌


Modifier en réponse à un commentaire: travaux dans Firefox 3. Notez que vous devez rechercher la valeur Unicode de l'entité

.
<html>
<body>
    <div id="test">
        This is a &zwnj;test
    </div>

    <script type="application/javascript">
        var myDiv = document.getElementById("test");
        var content = myDiv.innerHTML;
        var pos = content.indexOf("\u200C");
        alert(pos);
    </script>
</body>
</html>

Autres conseils

Vous pouvez les insérer dans des éléments de <span>. Cela ne fonctionnera que pour le texte en pages (attributs, etc.).

Dans le cas contraire, vous pouvez insérer un caractère espace que votre programme ne déjà pas émis dans le cadre du HTML, comme un caractère de tabulation (\x09), un onglet vertical (\x0b), un retour chariot nu (\x0d) - sans retour à la ligne à côté, ala de Windows encodage de texte -. ou, juste un octet nul (\x00)

La meilleure chose que je voudrais ajouter, ce qui est visible sur le navigateur, sera une paire de balises avec une carte d'identité spéciale, comme <span id="delimiter" class="Delimiter"></span>. Ce ne sera pas affiché sur le contenu, alors que cela peut être présent dans le doc. Vous n'avez pas besoin de les supprimer.

Vous pouvez utiliser gauche à droite (LRT) marque . Est-ce pour une sorte de test XSS? Si oui, cela pourrait intéresser: Taint support pour PHP

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top