Представьте себе следующее.
- HTML разбирается в dom-дереве
- Узлы Dom становятся доступными программно
- Узлы Dom могут быть или не могут быть программно расширены
- Расширенные узлы повторно сериализуются в html.
У меня в первую очередь вопрос о том, как бы хотелось, чтобы тег "script" вел себя.
my $tree = someparser( $source );
....
print $somenode->text();
$somenode->text('arbitraryjavascript');
....
print $tree->serialize();
Или на этот счет.
Проблема возникает при принятии решения о том, как правильно обращаться с содержимым этого поля в отношении простоты использования и переносимости / удобства использования его выбросов.
То, что я хочу сделать сам, это:
$somenode->text("verbatim");
->
<script>
// <!-- <![CDATA[
verbatim
// ]]> -->
</script>
Так что то, что я создаю, является в некоторой степени безопасным и пригодным для проверки
Но я нерешителен, если делать это волшебным образом - хорошая идея, и должен ли я иметь код, который пытается обнаружить существующие копии «блоков безопасности» и заменить их / удалить их на фазе «разбора».
Если я не уберу это из ввода, я, вероятно, удвою на фазе вывода, особенно проблематично, если позже выход этого кода будет захвачен повторно.
Если я уберу это из ввода, это будет иметь полезный эффект, так как программно выбирая содержимое элемента скрипта, вы не увидите блоки безопасности на обоих концах.
В конечном итоге будет найден способ отключить некоторые из этих действий, но вопрос в том, каким должен быть / default / способ обработки и почему.
Вполне возможно, что все мои рассуждения здесь ошибочны, и текстовое содержимое должно оставаться полностью необработанным, если только оно не требуется обрабатывать.
Какое поведение вы ищете в таком инструменте? Пожалуйста, укажите что-нибудь в рассуждениях, которые я мог упустить из виду.
Сводка TLDR:
Как я должен программно обрабатывать механизм escape- в этих сценариях, а именно безопасное заполнение '//<<code>!--<![CDATA[
' на обоих концах, относительно ввода / вывода