Beachten Sie, dass die Element::innerText
Eigenschaft nicht den Text enthält, der durch den CSS-Stil " display:none
" in Google Chrome ausgeblendet wurde (und den Inhalt löscht, der durch andere CSS-Techniken maskiert wurde (einschließlich Schriftgröße: 0, Farbe: transparent und)) einige andere ähnliche Effekte, die dazu führen, dass der Text nicht sichtbar gerendert wird).
Andere CSS-Eigenschaften werden ebenfalls berücksichtigt:
- Zuerst wird der "display:" - Stil der inneren Elemente analysiert, um festzustellen, ob er einen Blockinhalt begrenzt (z. B. "display: block", der die Standardeinstellung für HTML-Blockelemente im integrierten Stylesheet des Browsers ist und dessen Verhalten nicht überschrieben wurde Ihren eigenen CSS-Stil); In diesem Fall wird eine neue Zeile in den Wert der innerText-Eigenschaft eingefügt. Dies ist bei der Eigenschaft textContent nicht der Fall.
- Die CSS-Eigenschaften, die Inline-Inhalte generieren, werden ebenfalls berücksichtigt: Beispielsweise
<br \>
generiert das Inline-Element , das eine Inline-Newline generiert, auch eine Newline im Wert von innerText.
- Der Stil "display: inline" verursacht weder in textContent noch in innerText eine neue Zeile.
- Der Stil "display: table" generiert Zeilenumbrüche um die Tabelle und zwischen Tabellenzeilen, "display: table-cell" generiert jedoch ein Tabellierungszeichen.
- Die Eigenschaft "position: absolute" (wird mit display: block oder display: inline verwendet, spielt keine Rolle) führt auch dazu, dass ein Zeilenumbruch eingefügt wird.
- Einige Browser enthalten auch eine einzelne Leerzeichen-Trennung zwischen den Bereichen
Enthält Element::textContent
jedoch ALLE Inhalte innerer Textelemente unabhängig vom angewendeten CSS, auch wenn sie unsichtbar sind. In textContent werden keine zusätzlichen Zeilenumbrüche oder Leerzeichen generiert, bei denen lediglich alle Stile und die Struktur sowie Inline- / Block- oder positionierte Typen innerer Elemente ignoriert werden.
Beim Kopieren / Einfügen mit der Mausauswahl wird der verborgene Text im textContent
Nur -Text-Format, das in die Zwischenablage innerText
eingefügt wird, verworfen , sodass nicht alles in der Datei enthalten ist , sondern nur das, was sich darin befindet (nach der Generierung von Leerzeichen / Zeilenumbrüchen wie oben). .
Beide Eigenschaften werden dann in Google Chrome unterstützt, ihr Inhalt kann dann jedoch unterschiedlich sein. Ältere Browser, die immer noch in innetText enthalten sind, ähneln dem, was textContent jetzt enthält (aber ihr Verhalten in Bezug auf die damalige Erzeugung von Leerzeichen / Zeilenumbrüchen war inkonsistent).
jQuery löst diese Inkonsistenzen zwischen Browsern mithilfe der Methode ".text ()", die zu den analysierten Elementen hinzugefügt wird, die über eine $ () - Abfrage zurückgegeben werden. Intern löst es die Schwierigkeiten, indem es in das HTML-DOM schaut und nur mit der "Knoten" -Ebene arbeitet. Es wird also etwas zurückgegeben, das eher dem Standardtextinhalt ähnelt.
Die Einschränkung besteht darin, dass diese jQuery-Methode keine zusätzlichen Leerzeichen oder Zeilenumbrüche einfügt, die möglicherweise auf dem Bildschirm durch Unterelemente (wie <br />
) des Inhalts sichtbar sind .
Wenn Sie einige Skripte für die Barrierefreiheit entwerfen und Ihr Stylesheet für nicht-akustisches Rendern analysiert wird, z. B. Plugins für die Kommunikation mit einem Braille-Reader, sollte dieses Tool den Textinhalt verwenden, wenn es die spezifischen Interpunktionszeichen enthalten muss, die in mit gestalteten Bereichen hinzugefügten Bereichen hinzugefügt werden "display: none", die normalerweise in Seiten enthalten sind (z. B. für hochgestellte / tiefgestellte Zeichen), andernfalls ist der innerText für den Braille-Reader sehr verwirrend.
Von CSS-Tricks ausgeblendete Texte werden jetzt normalerweise von großen Suchmaschinen ignoriert (die auch das CSS Ihrer HTML-Seiten analysieren und Texte ignorieren, die keine kontrastierenden Farben im Hintergrund haben), indem sie einen HTML / CSS-Parser und die DOM-Eigenschaft verwenden "innerText" genau wie in modernen visuellen Browsern (zumindest dieser unsichtbare Inhalt wird nicht indiziert, sodass versteckter Text nicht als Trick verwendet werden kann, um die Aufnahme einiger Schlüsselwörter in die Seite zu erzwingen, um den Inhalt zu überprüfen); Dieser versteckte Text wird jedoch weiterhin auf der Ergebnisseite angezeigt (wenn die Seite noch für den Index qualifiziert war, um in die Ergebnisse aufgenommen zu werden). Verwenden Sie dazu die Eigenschaft "textContent" anstelle des vollständigen HTML-Codes, um die zusätzlichen Stile und Skripte zu entfernen.
Wenn Sie in einer dieser beiden Eigenschaften Klartext zuweisen, werden das innere Markup und die darauf angewendeten Stile überschrieben (nur das zugewiesene Element behält seinen Typ, seine Attribute und Stile bei), sodass beide Eigenschaften denselben Inhalt enthalten . Einige Browser berücksichtigen das Schreiben in innerText jetzt jedoch nicht mehr und lassen Sie nur die textContent-Eigenschaft überschreiben (Sie können beim Schreiben in diese Eigenschaften kein HTML-Markup einfügen, da HTML-Sonderzeichen ordnungsgemäß mit numerischen Zeichenreferenzen codiert werden, um buchstäblich angezeigt zu werden , wenn Sie dann die innerHTML
Eigenschaft nach der Zuweisung von innerText
oder lesen textContent
.