Сценарии, разработанные для стороннего вызова, обычно используют document.write()
для вывода своего содержимого.
Это нормально, когда загружается в прямой элемент <script>
в источнике главной страницы, как на этом этапе.точка document.write
просто добавляет вывод на страницу в позиции <script>
, которая его вызвала.Но после загрузки страницы это нехорошо: нет никакой позиции для записи содержимого, поэтому вместо этого JS делает вывод, что вы хотели вызвать document.open()
, чтобы написать совершенно новый документ перед вызовом write
,Это разрушает содержимое текущей страницы.
Вы можете попытаться «обмануть» сторонние скрипты, создав собственную функцию, которая переопределяет document.write
, перенаправляя передаваемые ей строки в переменную, которая затем может быть выведена встраница с использованием innerHTML
/ html()
.Но вам, возможно, будет лучше извлечь все из того, что делают сценарии, и сделать это самостоятельно.Сокращение зависимости от сторонних сценариев - это хорошо, потому что каждый раз, когда вы используете один из них, вы предоставляете этой стороне полный межсайтовый скриптинг доступ к контексту безопасности.
В любом случае вы никогда не должны использовать .load()
или .html()
для загрузки контента, включающего <script>
, так как результаты крайне ненадежны.