Таким образом, я недавно обнаружил, что мог использовать <>...>
теги в JavaScript в Firefox, который удобен при определении блоков HTML или CSS.
GM_addStyle(<>>);
//...
div.innerHTML = <>
]]>>;
Но я не абсолютно уверен, что продолжается, и мне нравится понимать синтаксис, который я использую. Что точно делает <>...>
вернуть? Я заметил, что выход работает лучше, когда я включаю содержание в , таким образом, что происходит там? Этот Firefox только, или перекрестный браузер?
Я попытался искать это онлайн, но столкнулся с нормальной проблемой Google/символа. Плюс, большинство результатов для google CDATA JavaScript не казался релевантным.
Я считаю, что пустые теги - это просто способ написать корневой элемент, чтобы было во что завернуть сгусток XML. Он говорит: "Интерпретируйте дочерние элементы этого корневого элемента как XML", а единственный дочерний элемент в вашем случае говорит: "Интерпретируйте этот дочерний элемент как блок CDATA."
. Нет причин использовать литерал XMLList ( <> ... >
) только с одним дочерним элементом, поскольку он обрабатывается в любом случае как единый элемент XML. Почему бы не использовать просто
? Кроме того,
просто возвращает текстовый узел XML ( . NodeKind () === "text"
).
Все это часть E4X , которая реализуется ActionScript 3 и обоими механизмами JavaScript.
Как сказал Элайджа, это синтаксис E4X, который не будет работать нигде, кроме Mozilla. Похоже, что вы не используете его для чего-либо связанного с XML, а просто полагаетесь на то, что неявный метод toString
объекта XML
будет таким же, как и исходная разметка. ECMA-357 (спецификация E4X) не определяет точных правил разбора и сериализации XML, поэтому не гарантирует, например, удаление маркеров за вас. IMO полагаться на это даже в Firefox сомнительно.
В любом случае, это не решает проблемы экранирования содержимого для использования внутри блока script
... в частности, последовательность все еще недопустима в HTML4, вся эта куча недопустима в XHTML, и вам все еще придется беспокоиться о последовательностях
и
]]>
в содержимом. Так что на самом деле вы ничего не выиграли... в лучшем случае, вы получили многострочную строку во внешних скриптах, за счет поддержки всех остальных браузеров. Я не думаю, что это действительно того стоит.