Ich brauche eine Möglichkeit, bestimmte Zeichenfolgen in HTML-Markup zu identifizieren. Ich weiß, was die Zeichenfolgen sind, aber es ist möglich, dass sie Teilzeichenfolgen anderer Zeichenfolgen im Dokument sind. Um sie zu finden, gebe ich ein spezielles Trennzeichen aus (derzeit mit \032). Beim Laden der Seite gehen wir den HTML-Code durch, zeichnen die Position der Zeichenfolgen auf und entfernen das Trennzeichen.
Leider zeigen die meisten Browser das Trennzeichen, bis wir sie alle finden und entfernen können. Das möchte ich nach Möglichkeit vermeiden. Gibt es ein Zeichen oder eine Zeichenfolge, die im HTML-Inhalt erhalten bleibt (damit ein Kommentar nicht funktioniert), aber für den Benutzer nicht sichtbar ist? Es muss auch etwas sein, das ziemlich unwahrscheinlich neben einer Zeichenfolge erscheint, also so etwas wie würde auch nicht funktionieren.
BEARBEITEN: Entschuldigung, ich habe vergessen zu erwähnen, dass die Zeichenfolgen in Attributen enthalten sind, sodass jede Art von Tag nicht funktioniert.
Vielleicht könntest du einfach ein paar verwenden <span> Stichworte?
– Thomas
11. Mai 2010 um 16:03 Uhr
Ich stimme Thomas zu, aber ich würde hinzufügen, dass er ihnen eine Klasse wie hinzufügen sollte. Deshalb wären sie leicht zu finden und zu manipulieren.
Falls dies bereits in Ihrem Text vorkommt, verdoppeln Sie es (z. B.: ‌‌mytext‌‌
Als Antwort auf Kommentar bearbeiten: funktioniert in Firefox 3. Beachten Sie, dass Sie nach dem Unicode-Wert der Entität suchen müssen.
<html>
<body>
<div id="test">
This is a ‌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>
Danke dafür … Ich habe es gerade in einem Fall verwendet, in dem ich Zeichenfolgen mit langen Wörtern mit Schrägstrichen hatte, die Dinge verbinden. Ich wollte dem Browser “vorschlagen”, dass er Zeilen an den Schrägstrichen umbricht, also habe ich myString.replace(“/”, “/\u200c”) eingefügt.
– Malcolm Dwyer
4. Oktober 2013 um 15:00 Uhr
Sie könnten sie einfügen <span> Elemente. Dies funktioniert nur für In-Page-Text (nicht für Attribute oder ähnliches).
Andernfalls könnten Sie ein Leerzeichen einfügen, das Ihr Programm nicht bereits als Teil des HTML ausgibt, wie z. B. ein Tabulatorzeichen (\x09), ein vertikaler Tabulator (\x0b), ein bloßer Wagenrücklauf (\x0d) – ohne einen Zeilenumbruch daneben, ala Windows-Textcodierung – oder nur ein Null-Byte (\x00).
Windows hat niemals einen Wagenrücklauf ohne eine neue Zeile danach verwendet; es verwendet immer beide nacheinander. Sie denken an alte Macs.
– Michael Madson
11. Mai 2010 um 21:24 Uhr
Das Problem mit Leerzeichen ist also, dass das DOM normalisiert und sonst mit ihnen herumspielt, sodass sie später nicht zuverlässig gefunden werden können. VTs neigen dazu, im DOM in Leerzeichen umgewandelt zu werden.
– Noah
12. Mai 2010 um 14:10 Uhr
@Michael Madsen – Das meinte ich; wie foo\x{0d}\x{0a}bar ist die Windows-Standard-Zeilenformatierungsmethode und würde nicht übereinstimmen /\x0d(?[^\x0a]*)\x0d. Kudos, dass Sie sich an die alte Mac-Codierung erinnern! Jemals versucht type– eine Datei in dieser Codierung auf einem Windows-Terminal? Druckt alles auf einer Zeile! 🙂
– Amphetamaschine
12. Mai 2010 um 17:48 Uhr
Das Beste, was ich einfügen möchte, was im Browser nicht sichtbar ist, ist ein Tag-Paar mit einer speziellen ID, wie z <span id="delimiter" class="Delimiter"></span>. Dies wird nicht im Inhalt angezeigt, während dies im Dokument vorhanden sein kann. Sie müssen sie nicht entfernen.
Entschuldigung, ich habe vergessen zu erwähnen, dass die Zeichenfolgen auch in Attributen vorkommen, sodass die Tags codiert werden.
Vielleicht könntest du einfach ein paar verwenden
<span>
Stichworte?– Thomas
11. Mai 2010 um 16:03 Uhr
Ich stimme Thomas zu, aber ich würde hinzufügen, dass er ihnen eine Klasse wie hinzufügen sollte. Deshalb wären sie leicht zu finden und zu manipulieren.
– joatis
11. Mai 2010 um 16:06 Uhr