Fenster
Das Fensterobjekt fungiert nicht nur als globaler Bereich, sondern stellt auch ein Browserfenster dar.
Das Fensterobjekt verfügt über Innerbreiten- und Innerheight -Eigenschaften, die die innere Breite und Höhe des Browserfensters erhalten können. Interne Breite und Höhe beziehen Sie sich auf die Nettobreite und Höhe, mit der die Webseite angezeigt wird, nachdem die Platzhalterelemente wie Menüleiste, Symbolleiste, Rand usw. entfernt wurden. Es gibt auch eine Außenbreite und Außenheigung, die die gesamte Breite und Höhe des Browserfensters erhalten können.
Wieder auffüllen:
Die sichtbare Flächenbreite der Webseite: Dokument.Body.Clientwidth Die sichtbare Flächenhöhe der Webseite: Dokument. Die vollständige Texthöhe der Webseite: document.body.ScrollHeight Die Höhe der Webseite wird eingeführt: Dokument. window.screen.width Der Bildschirm Verfügbare Arbeitsbereich Höhe: Fenster $ (Fenster) .Width ()
Special 1: Lösung zum Dokument.body.Scrolltop ist immer 0 var scrollpos; if (typeof window.pageyOffset! = 'undefined') {scrollpos = window.pageyoffset; } else if (typeof document.compatmode! = 'undefined' && document.compatmode! } else if (typeof document.body! = 'undefined') {scrollpos = document.body.scrolltop; } alert (scrollpos); Special 2: Die vollständige Textbreite der Webseite: "+ document.body.Scrollwidth; Die vollständige Texthöhe der Webseite:"+ document.body.ScrollHeight; Die obigen Funktionen können manchmal nicht erhalten werden, verwenden Sie daher die folgende Methode. var xscroll, yScroll; if (window.innerHeight && window.scrollmaxy) {xscroll = document.body.scrollwidth; yScroll = window.innerHeight + window.scrollmaxy; } else if (document.body.scrollHeight> document.body.offseteight) {// alle außer Explorer mac xscroll = document.body.scrollwidth; yScroll = document.body.scrollHeight; } else {// explorer mac ... würde auch in Explorer 6 strikt, mozilla und safari xscroll = document.body.offsetwidth; yScroll = document.body.offseteight; }Navigator
Das Navigator -Objekt repräsentiert die Informationen des Browsers. Zu den am häufigsten verwendeten Eigenschaften gehören:
• Navigator.Appname: Browsername;
• Navigator.Appversion: Browserversion;
• navigator.language: Die vom Browser festgelegte Sprache;
• navigator.platform: Betriebssystemtyp;
• Navigator.Useragent: Die vom Browser festgelegte Benutzer-Agent-Zeichenfolge.
Um einen anderen Code für verschiedene Browser zu schreiben, verwenden Anfänger beispielsweise, ob Sie die Browserversion beurteilen können:
var width; if (getSieversion (navigator.useragent) <9) {width = document.body.clientwidth;} else {width = window.innnerwidth;} Dies kann jedoch im Urteil ungenau sein und es ist auch schwierig, den Code aufrechtzuerhalten. Die richtige Art und Weise besteht darin, die Funktion von JavaScript, die Rückkehr für nicht existierende Eigenschaften undefined voll auszunutzen und den Kurzschlussbetreiber direkt zu verwenden || zu berechnen:
var width = window.innnerwidth || document.body.clientwidth;
Bildschirm
Das Bildschirmobjekt repräsentiert die Informationen des Bildschirms. Gemeinsame Eigenschaften sind:
• Bildschirm.WIDTH: Bildschirmbreite in Pixeln;
• Bildschirm.Height: Bildschirmhöhe in Pixeln;
• Bildschirm.Colordepth: Gibt die Anzahl der Farbstellen wie 8, 16, 24 zurück.
Standort
Das Standortobjekt repräsentiert die URL -Informationen der aktuellen Seite. Zum Beispiel eine vollständige URL:
http://www.example.com:8080/path/index.html?a=1&b=2#top
Es kann mit location.href erhalten werden. Um die Werte jedes Teils der URL zu erhalten, können Sie sie so schreiben:
Ort.Protocol; // 'http'location.host; // 'www.example.com' location.port; // '8080'Location.PathName; // '/path/index.html'location.search; // '? a = 1 & b = 2'location.hash; // 'SPITZE'
Um eine neue Seite zu laden, können Sie location.assisign () anrufen. Wenn Sie die aktuelle Seite neu laden möchten, ist es sehr bequem, die Methode von Ort.Reload () aufzurufen.
dokumentieren
Das Dokumentobjekt repräsentiert die aktuelle Seite. Da HTML als Baumstruktur im Browser in Form von DOM dargestellt wird, ist das Dokumentobjekt der Stammknoten des gesamten DOM -Baums.
Das Titelattribut des Dokuments wird aus <title> xxx </title> im HTML -Dokument gelesen, kann jedoch dynamisch geändert werden:
Das Dokumentobjekt verfügt auch über ein Cookie -Attribut, mit dem die Cookies der aktuellen Seite abgerufen werden können.
Ein Cookie ist eine vom Server gesendete Schlüsselwert-Kennung. Da das HTTP -Protokoll staatenlos ist, kann der Server zwischen der von ihm gesendeten Anforderung des Benutzers unterscheiden, und es kann durch Cookies unterschieden werden. Wenn sich ein Benutzer erfolgreich anmeldet, sendet der Server ein Cookie an den Browser, wie z. B. User = ABC123XYZ (verschlüsselte Zeichenfolge). Wenn der Browser die Website besucht, wird dieses Cookie an den Anforderungsheader angehängt, und der Server kann den Benutzer basierend auf dem Cookie unterscheiden.
Cookies können auch einige Einstellungen der Website speichern, z. B. die Sprache der angezeigten Seite usw.
JavaScript kann die Cookies auf der aktuellen Seite über document.cookie lesen:
document.cookie; // 'v = 123; erinnere = wahr; bevorzugt = Zh '
Da JavaScript Cookies auf der Seite lesen kann und die Anmeldeinformationen des Benutzers normalerweise auch in Cookies vorhanden sind, schafft dies ein großes Sicherheitsrisiko. Dies liegt daran, dass das Einführen von JavaScript-Code von Drittanbietern in HTML-Seiten zulässig ist:
<!-Die aktuelle Seite ist unter wwwexample.com-> <html> <kopf> <script src = "http://www.foo.com/jquery.js"> </script> </head> </html>
Wenn in JavaScript des eingeführten Drittanbieters böswilligen Code vorhanden ist, erhält die Website www.foo.com die Benutzer-Anmeldeinformationen der Benutzer von www.example.com direkt.
Um dieses Problem zu lösen, kann der Server beim Einstellen von Cookies HTTPonly verwenden. Cookies, die httponly festlegen, werden nicht von JavaScript gelesen. Dieses Verhalten wird vom Browser implementiert, und Mainstream -Browser unterstützen die Option HTTPonly. Um die Sicherheit zu gewährleisten, sollte der Server immer darauf bestehen, HTTPonly beim Einstellen von Cookies zu verwenden.
document.write () gibt nur neue Inhalte in das Dokument aus
Wenn document.write nach dem Laden des Dokuments ausgeführt wird, wird die gesamte HTML -Seite überschrieben:
Referenz: http://www.w3school.com.cn/tiy/t.asp?f=js_write_over
Dom | Dokumentieren
// den Knoten mit ID 'test' zurückgeben: var test = document.getElementById ('test'); // Alle direkten untergeordneten Knoten unter Knoten -Test abrufen: var cs = test.children; var first = test.firstelementChild; Die zweite Methode besteht darin querySelector() und querySelectorAll() zu verwenden. Sie müssen die Selektorsyntax verstehen und dann die Bedingungen verwenden, um den Knoten zu erhalten, was bequemer ist:
// den Knoten mit ID Q1 über QuerySelector erhalten: var q1 = document.querySelector ('#q1'); // Alle Knoten im Q1 -Knoten erhalten, die die Bedingungen durch QuerySelectorAll: var ps = q1.QuerySelectorall ('Div.Highlighted> P') erfüllen;Streng genommen bezieht sich der DOM -Knoten hier auf Element, aber der DOM -Knoten ist tatsächlich Knoten. In HTML enthält der Knoten viele Arten von Elementen, Kommentaren, CDATA_SECTIONs usw. sowie den Stammknoten -Dokumenttyp. Meistens kümmern wir uns jedoch nur um ein Element, dh einen Knoten, der die Seitenstruktur tatsächlich steuert und andere Arten von Knoten ignoriert. Das Stammknotendokument wurde automatisch an ein globales Variablendokument gebunden.
Modifizieren Sie DOM
Das Ändern von CSS ist ebenfalls eine übliche Operation. Das Stilattribut des DOM -Knotens entspricht allen CSSs und kann direkt abgerufen oder festgelegt werden. Da CSS Namen wie eine Schriftgröße erlaubt, aber kein gültiger Eigenschaftsname für JavaScript ist, muss es in JavaScript in einen Namen im Kamelstil umgeschrieben werden:
// Get <p id = "p-id"> ... </p> var p = document.getElementById ('p-id'); // CSS: P.Style.color = '#ff0000';DOM einfügen
Es gibt zwei Möglichkeiten, einen neuen Knoten einzufügen. Eine davon ist, AppendChild zu verwenden, um dem letzten untergeordneten Knoten des übergeordneten Knotens einen untergeordneten Knoten hinzuzufügen. Zum Beispiel:
<!-HTML-Struktur-> <p id = "js"> javaScript </p> <div id = "list"> <p id = "Schema"> Schema </p> </div>
Fügen Sie <p id="js">JavaScript</p> zum letzten Element von <div id="list"> :
var js = document.getElementById ('js'), list = document.getElementById ('list'); list.appendChild (js);Jetzt wird die HTML -Struktur wie folgt:
<!-HTML-Struktur-> <div id = "list"> <p id = "Schema"> Schema </p> <p id = "js"> JavaScript </p> </div>
Da der von uns bereits eingefügte js -Knoten im aktuellen Dokumentbaum vorhanden ist, wird dieser Knoten zunächst von seinem ursprünglichen Standort gelöscht und dann in einen neuen Ort eingefügt.
Meistens erstellen wir einen neuen Knoten von Null und fügen ihn an den angegebenen Ort ein:
Haskell = document.createelement ('p'); Das dynamische Erstellen eines Knotens und das Hinzufügen des DOM -Baums kann viele Funktionen erzielen. Beispielsweise erstellt der folgende Code dynamisch einen <style> -Knoten und fügt ihn zum Ende <head> -Knotens hinzu, wodurch dem Dokument eine neue CSS -Definition dynamisch hinzugefügt wird:
var d = document.createelement ('style'); d.setattribute ('type', 'text/css');vorab
Was ist, wenn wir untergeordnete Knoten in den angegebenen Ort einfügen möchten? Sie können ParentElement.insertBefore (NewLeement, ReferenceElement) verwenden; und der untergeordnete Knoten wird vor dem Referenzelement eingefügt.
Oft ist es notwendig, alle Kinder eines übergeordneten Knotens durchzugehen, was durch Iterieren des Kinderattributs implementiert werden kann:
var i, c, list = document.getElementById ('list'); für (i = 0; i <list.children.length; i ++) {c = list.children [i]; // Holen Sie sich den I-Th-Kinderknoten}DOM löschen
Um einen Knoten zu löschen, müssen Sie zuerst den Knoten selbst und seinen übergeordneten Knoten erhalten und dann den Removechild des übergeordneten Knotens aufrufen, um sich selbst zu löschen:
// den Knoten löschen lassen: var self = document.GetElementById ('zuge-gereizt'); // den übergeordneten Knoten abrufen: var parent = self.Parentelement; // löschen: var entfernt = parent.removechild (self); entfernt === Selbst; // WAHRMir ist aufgefallen, dass der gelöschte Knoten zwar nicht mehr im Dokumentbaum ist, er jedoch immer noch im Speicher ist und zu jeder Zeit zu einem anderen Ort hinzugefügt werden kann.
Wenn Sie ein Kind eines übergeordneten Knotens durchqueren und eine Löschoperation ausführen, beachten Sie, dass das Attribut für Kinder ein schreibgeschütztes Attribut ist und in Echtzeit aktualisiert wird, wenn sich der Kinderknoten ändert. Beim Löschen mehrerer Knoten ist es daher wichtig zu beachten, dass sich die Kinderattribute ständig ändern.
Betriebsformular
Die Verwendung von JavaScript zur Manipulation von Formularen ähnelt dem operativen DOM, da das Formular selbst auch ein DOM -Baum ist.
Das Eingangsfeld des Formulars, das Dropdown-Box usw. kann jedoch die Benutzereingabe empfangen. Wenn Sie JavaScript zum Betrieb des Formulars verwenden, können Sie den vom Benutzer eingegebenen Inhalt abrufen oder neue Inhalte für ein Eingabefeld festlegen.
Es gibt hauptsächlich die folgenden Eingabesteuerungen für HTML -Formulare:
• Textfeld, das entsprechende <Eingabe -Typ = "Text">, wird zum Eingeben von Text verwendet.
• Kennwortbox, das entsprechende <Eingabe -Typ = "Passwort">, wird zum Eingeben von Kennwörtern verwendet.
• Das Radierfeld, das entsprechende <Eingabe -Typ = "Radio">, wird verwendet, um ein Element auszuwählen.
• Kontrolliertes Kontrollkästchen, das entsprechende <Eingabe -Typ = "Kontrollkästchen"> wird verwendet, um mehrere Elemente auszuwählen.
• Das Dropdown-Feld, das entsprechende <Select>, wird verwendet, um ein Element auszuwählen.
• Versteckter Text, der entsprechende <Eingabe type = "Hidden"> ist für den Benutzer nicht sichtbar, aber der versteckte Text wird an den Server gesendet, wenn das Formular eingereicht wird.
Erhalten Sie den Wert
Wenn wir einen Verweis auf einen <eingabe> Knoten erhalten, können wir den Wert des entsprechenden Benutzereingabestells direkt aufrufen:
// <input type = "text" id = "E -Mail"> var input = document.getElementById ('E -Mail'); Eingabe.Value; // 'vom Benutzer eingegebener Wert' Diese Methode kann auf text , password , hidden und select werden. Für Radio- und Kontrollkästchen gibt value -Attribut jedoch immer den HTML -Voreinstellungswert zurück. Wir müssen jedoch tatsächlich die Option "geprüft" "überprüft" haben. Daher sollte checked werden, um zu beurteilen:
// <label> <Eingabe type = "radio" name = "wochentag" id = "montag" value = "1"> montag </label> // <label> <Eingabe type = "radio" name = "woCHNEDDAG" ID = "Dienstag" value = "2"> Dienstag </label> var mon = document. // '1'tue.Value; // '2'Mon.Conted; // wahr oder falsch
Wert setzen
Das Festlegen des Wertes ähnelt dem Wert des Wertes. Für Text, Passwort, versteckt und auswählen, können Sie den Wert direkt festlegen:
// <input type = "text" id = "E -Mail"> var input = document.getElementById ('E -Mail'); input.value = '[email protected]'; // Der Inhalt des Textfelds wurde aktualisiertFür Radio und Kontrollkästchen werden auf True oder False eingestellt.
HTML5 -Steuerelemente
HTML5 hat eine große Anzahl von Standardsteuerungen hinzugefügt, die häufig verwendete Datum, DateTime, DateTime-Local, Farbe usw. enthalten. Sie alle verwenden das <eingabe> -Tag:
<Eingabe type = "Datum" value = "2015-07-01">
<Eingabe type = "DateTime-local" value = "2015-07-01T02: 03: 04">
<Eingabe type = "color" value = "#ff0000">
Browser, die HTML5 nicht unterstützen, können neue Steuerelemente nicht erkennen und werden als Typ = "Text" angezeigt. Browser, die HTML5 unterstützen, erhalten formatierte Saiten. Beispielsweise ist der Wert von type = "Datum" Eingabe garantiert ein gültiges Datum im yyyy-mm-dd-Format oder eine leere Zeichenfolge.
Ein Formular einreichen
Schließlich kann JavaScript auf zwei Arten die Einreichung von Formularen verarbeiten (die AJAX -Methode wird im folgenden Kapitel eingeführt).
Die erste Methode besteht darin, ein Formular über die Methode des <formular -Elements von Subjekt () zu senden. Senden Sie beispielsweise als Antwort auf eine <button> Klicken Sie auf das Formular in JavaScript -Code ein:
<form id = "test-form"> <Eingabe type = "text" name = "test"> <button type = "button" onclick = "doSubmitform ()"> surven </button> </form> <skript> Funktion dosubmitform () {var Form = Dokument.GetElementById ('Test-Form'); // Sie können die Eingabe des Formulars hier ändern ... // Formular: Formular.submit ();} </script> Der Nachteil dieser Methode besteht darin, dass sie die normale Einreichung des Browsers zur Bildung stört. Das Browser reicht das Formular beim Klicken auf <button type="submit"> standardmäßig ein oder der Benutzer drückt die Eingabetaste im letzten Eingabefeld. Daher besteht der zweite Weg darin, auf das onsubmit -Ereignis von <form> selbst zu reagieren und bei der Übermittlung des Formulars Änderungen vorzunehmen:
<form id = "test-form" onSuBmit = "return checkForm ()"> <Eingabe type = "text" name = "test"> <schalttype = "enden"> enden </button> </form> <skript> Funktion achhtform () {var Form = Dokument.GetElementById ('Test-Form'); // Sie können die Eingabe des Formulars hier ändern ... // Fahren Sie mit dem nächsten Schritt fort: Return true;} </script> Beachten Sie, dass die return true den Browser mitteilt, dass er weiterhin einreicht. Wenn der Browser return false , wird das Formular nicht weiterhin eingereicht. Diese Situation entspricht normalerweise dem Eingabefehler des Benutzers, und der Benutzer wird für Fehlermeldungen aufgefordert und das Formular wird beendet.
Nutzen Sie bei der Überprüfung und Änderung <input> die volle Verwendung von <input type="hidden"> um Daten zu übergeben.
Beispielsweise möchten viele Anmeldeberäle, Benutzernamen und Kennwörter einzugeben, übertragen jedoch aus Sicherheitsgründen keine Klartextkennwörter, wenn Sie das Formular senden, sondern MD5 des Kennworts. Gewöhnliche JavaScript -Entwickler ändern die <input> :
<form id="login-form" method="post" onsubmit="return checkForm()"> <input type="text" id="username" name="username"> <input type="password" id="password" name="password"> <button type="submit">Submit</button></form><script>function checkForm() { var pwd = document.getElementById('password'); // Ändern Sie den vom Benutzer eingegebenen Klartext in MD5: pwd.value = tomd5 (pwd.value); // Fahren Sie mit dem nächsten Schritt fort: RECHT WAHR;} </script> Diese Methode scheint in Ordnung zu sein, aber wenn der Benutzer das zum Senden von Kennwort eingreife Kennwort eingibt, wird das Kennwortfeld plötzlich von mehreren * bis 32 * angezeigt (weil MD5 32 Zeichen hat).
Um die Eingabe des Benutzers nicht zu ändern, können Sie <input type="hidden"> verwenden, um zu implementieren:
<form id = "login-form" methode = "post" onSubmit = "return checkform ()"> <Eingabe type = "text" id = "username" name = "userername"> <input type = "password" id = "input-password"> <input type var input_pwd = document.getElementById ('Eingabepasswort'); var md5_pwd = document.getElementById ('md5-password'); // Ändern Sie den vom Benutzer eingegebenen Klartext in MD5: md5_pwd.value = tomd5 (input_pwd.value); // Fahren Sie mit dem nächsten Schritt fort: RECHT WAHR;} </script>Beachten Sie, dass die <eingabe> mit der ID von MD5-Passwort markiert name = "password", während die vom Benutzer eingegebene ID ohne das Attribut des Namens ein Eingabepasswort ist. Daten ohne Namensattribut <eingabe> werden nicht übermittelt.
Betriebsdateien
In HTML -Formularen ist die einzige Steuerung, die Dateien hochladen kann, <Eingabe type = "file">.
HINWEIS: Wenn ein Formular <input type = "file"> enthält, muss der EncTTEPE des Formulars als MultiPart/Form-Daten angegeben werden, und die Methode muss als Post angegeben werden, sodass der Browser die Daten des Formulars korrekt codieren und senden kann.
Aus Sicherheitsgründen können Benutzer nur mit dem Browser auf <Eingabe type = "Datei"> klicken, um lokale Dateien auszuwählen. Verwenden von JavaScript, um den Wert an <input type = "file"> zuzuweisen, hat keinen Einfluss. Wenn der Benutzer eine Datei hochladen möchte, kann JavaScript den realen Pfad zur Datei nicht erhalten:
Datei, die hochgeladen werden soll:
Normalerweise werden hochgeladene Dateien vom Backend -Server verarbeitet. JavaScript kann die Dateierweiterung überprüfen, wenn sie das Formular senden, um Benutzer daran zu hindern, Dateien in ungültigen Formaten hochzuladen:
var f = document.getElementById ('Test-File-Upload'); var Filename = f.Value; // 'c: /fakepath/test.png'if (! FileName ||! (Dateiname.endswith ('. JPG ') || fileName.endswith ('. Png ') || Dateiname.endswith ('. Gif ')) {Alert (' kann nur Bilddateien hochladen. '); Rückgabe falsch;}Datei -API
Da JavaScript nur über sehr begrenzte Vorgänge in Dateien verfügt, die von Benutzern hochgeladen wurden, insbesondere die Unfähigkeit, Dateiinhalte zu lesen, müssen viele Webseiten, für die Betriebsdateien erforderlich sind, mithilfe von Plug-Ins von Drittanbietern wie Flash implementiert werden.
Mit der Popularität von HTML5 ermöglicht die neu hinzugefügte Datei -API JavaScript, Dateiinhalte zu lesen und weitere Dateiinformationen zu erhalten.
Die Datei -API von HTML5 enthält zwei Hauptziele: Datei und FileReader, mit denen Dateiinformationen und Lesedateien abgerufen werden können.
Das folgende Beispiel zeigt, wie Sie eine vom Benutzer ausgewählte Bilddatei lesen und das Bild in einem <div> vorschauen:
Bildvorschau:
var fileInput = document.getElementById ('Test-Image-File'), info = document.getElementById ('Test-File-info'), preview = document.getElementById ('Test-Image-Preview'); // Anhören von Änderungen Ereignisse: FileInput.AdDeVentListener ('Change', function () {// Hintergrundbild: Vorschau.Style.backgroundimage = ''; // Überprüfen Sie, ob die Datei ausgewählt ist: if (! FileInput. info.innerhtml = 'Datei:' + file.name + '<br>' + 'Größe:' + file.size + '<br>' + 'geändert:' + file.lastModifiedDate; Bilddatei! '); Datei in Form von DataURL: reader.readasDataurl (Datei);});Der obige Code zeigt, wie Dateiinhalte über die Datei -API von HTML5 gelesen werden. Die in Form von DataURL gelesene Datei ist eine Zeichenfolge, ähnlich wie bei Daten: Bild/JPEG; Base64,/9J/4AAQSK ... (Base64 -Codierung). Es wird oft verwendet, um Bilder festzulegen. Wenn die serverseitige Verarbeitung erforderlich ist, senden Sie die Zeichen nach dem String Base64 an den Server und dekodieren Sie sie mit Base64, um den binären Inhalt der Originaldatei zu erhalten.
Rückruf
Der obige Code zeigt auch ein wichtiges Merkmal von JavaScript, nämlich der Einzel-Thread-Ausführungsmodus. In JavaScript führt die JavaScript-Ausführungs-Engine des Browsers beim Ausführen von JavaScript-Code immer im Einzel-Thread-Modus aus, was bedeutet, dass der JavaScript-Code zu jeder Zeit unmöglich ist, dass mehr als 1 Thread gleichzeitig ausgeführt wird.
Sie könnten fragen, wie Sie Multitasking im Single-Thread-Modus umgehen können.
In JavaScript wird Multitasking tatsächlich asynchron aufgerufen, wie z. B. den obigen Code:
Reader.ReadasDataurl (Datei);
Ein asynchroner Vorgang wird eingeleitet, um den Dateiinhalt zu lesen. Da es sich um einen asynchronen Betrieb handelt, wissen wir nicht, wann der Vorgang im JavaScript -Code endet. Daher müssen wir zuerst eine Rückruffunktion festlegen:
Reader.onload = Funktion (e) {// Wenn die Datei gelesen wird, wird diese Funktion automatisch bezeichnet:};Wenn die Lesen der Datei abgeschlossen ist, ruft die JavaScript -Engine die von uns festgelegte Rückruffunktion automatisch auf. Wenn die Rückruffunktion ausgeführt wird, wurde die Datei gelesen, sodass wir die Dateiinhalte in der Rückruffunktion sicher abrufen können.
Der obige Artikel spricht kurz über das JavaScript -Browser -Objekt ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, es kann Ihnen eine Referenz geben und ich hoffe, Sie können Wulin.com mehr unterstützen.