Ich debugge ein Problem mit einem Skript von Drittanbietern, das WordPress-Benutzer verwenden, indem sie einen Ausschnitt aus Skript und HTML in die Körper ihres Posts kopieren / einfügen, wie (natürlich ein Beispiel aus der realen Welt):
<script>
window.foobar = window.foobar || { hello: function(){ console.log('Hello World'); } };
window.foobar.hello();
</script>
Ich habe festgestellt, dass einige WordPress-Installationen dies in CDATA einschließen, andere nicht (wahrscheinlich durch eine Art DOCTYPE-Überprüfung - obwohl alle Themen, an denen ich dies getestet habe, einen HTML5-Doctype verwendeten).
Beim Umschließen des Skripts in CDATA werden die Benutzer jedoch von dem folgenden Fehler gebissen: https://core.trac.wordpress.org/ticket/3670 (das Schließen >
wird fälschlicherweise durch ersetzt >
), was dazu führt, dass der Browser den Skriptinhalt ignoriert ::
<script>// <![CDATA[ window.foobar = window.foobar || { hello: function(){ console.log('Hello World'); } }; window.foobar.hello(); // ]]></script>
Ich besitze selbst nicht zu viel WP-Fu und das Googeln hat mich nur dazu gebracht, das Problem so zu identifizieren, wie es ist. Meine Frage wäre also: Wann genau packt WordPress Inline-Skripte in CDATA-Abschnitte? Kann der Benutzer dieses Verhalten irgendwie verhindern? Kann der Benutzer den oben genannten Fehler irgendwie umgehen, ohne den WP-Kern zu ändern?