Warum ausdrücklich TextArea erwähnen? Weil der Textbereichknoten eigentlich etwas ganz Besonderes ist. Da dieser Knoten etwas Besonderes ist, unterscheidet sich die Erklärung in IE und anderen Browsern.
Hör auf, es zu verkaufen, haha! Der Hauptgrund ist, dass ich einem Senior Brother heute geholfen habe, einen Fehler zu reparieren. Insbesondere konnte es keine Daten vom Server abziehen und sie in textarea einfügen. Diese Situation tritt nur in IE auf. Alle anderen Browser sind normal!
Warum ist TextArea zuallererst etwas Besonderes? In allen Formular -Plugins wird der Wert von textarea zwischen zwei offenen und geschlossenen Tags geschrieben, sodass sein Wert aus der Perspektive des DOM als Textknoten angesehen werden kann, was für Textbereich einzigartig ist. Aufgrund dieser Funktion können Sie, wenn Sie den inneren Wert des Innerhtml ändern, immer noch den Text des Textbereichs ändern. Obwohl der IE dies unterstützt, erlaubt dies keines: Fügen Sie einige HTML -Tags dynamisch ein.
Sie können genauso gut ein Experiment machen:
Fügen Sie ein Stück HTML -Code durch JS in IE ein, indem Sie das innerHTML -Attribut anstelle von Wert oder InnerText verwenden.
Ich habe IE9+nicht getestet, aber IE6, 7 und 8 werden Fehler melden.
Es ist wahrscheinlich aus Sicherheitsgründen, sodass JS HTML nicht dynamisch in textarea einfügen darf, aber sorgfältige Personen können feststellen, dass TextArea, wenn Sie den HTML -Code manuell eingeben, akzeptabel ist. Ich denke, das hat tatsächlich einen Prozess wie diesen durchlaufen: Charakter -Flucht. Ja, dies ist der einzige Grund, warum manueller HTML -Code erfolgreich ist.
Meiner Meinung nach müssen Sie meiner Meinung nach beim Betrieb von JS immer noch das InnerHTML -Attribut verwenden, da so viele Browser -Textbereiche keine HTML -Anzeige unterstützen müssen? Mit anderen Worten, unabhängig davon, ob Sie HTML -Code mit Wert oder Innerhtml mit HTML -Code einfügen, wird er nicht analysiert und angezeigt (so wird es einen reichen Texteditor anstelle von TextArea geben). Warum also den Wert nicht verwenden, um den Wert von textarea zu setzen?
Ich denke also, dass die Festlegung des Werts von TextArea nicht durch Innerhtml erfolgen sollte (natürlich ist es aufgrund von Firefox noch unmöglich, InnerText zu sein), sondern sollte durch Wert gesetzt werden. Dies ist etwas, worauf Entwickler achten sollten. Weil ich kürzlich einige Kinderschuhe -Codes gelesen habe, die immer gerne Innerhtml verwenden. Eigentlich denke ich, dass es sich nur um Anlässe handelt.