Получатель html()
не удаляет содержимое скрипта. Если вы не получаете <script>
от html()
, то это потому, что в то время, когда он вызывался, в DOM не было тега <script>
.
Если вы пишете в этот элемент с помощью установщика html(value)
, а затем позже читаете его обратно, то , что приведет к тому, что <script>
s будет удалено. jQuery преднамеренно удаляет <script>
теги из входных данных (среди прочих неприятных вещей, которые он делает с входящей разметкой, используя некоторый действительно ошибочный взлом регулярных выражений), и пытается запустить код внутри них вручную при вставке.
Это потому, что если вы просто напишите <script>
в innerHTML
, браузер не выполнит этот скрипт. Однако если вы затем выполняете манипуляции с DOM на получающихся узлах DOM, браузеры будут иногда выполнять сценарий, но в разное время, вызывая нежелательную кросс-браузерную несогласованность.
Какова ваша цель, зачем вам нужно писать, а затем извлекать <script>
элементов? Писать <script>
в документ с помощью html()
или innerHTML
.
почти никогда не стоит.