Подтвердить что ты не робот

Зачем использовать document.write?

Мне было интересно, почему реклама по-прежнему использует метод document.write для добавления добавления на страницу

<script language="javascript" type="text/javascript">
    document.write("<script type='text/javascript' src='http://addomain/someadd.js'><\/sc" + "ript>");
</script>

Почему я не могу просто поставить

<script type='text/javascript' src='http://addomain/someadd.js'></script>

Вместо объявления?

4b9b3361

Ответ 1

Традиционный тег script блокирует страницу во время загрузки и выполнения. A script, загруженный document.write, будет работать асинхронно. Вот почему вы видите это в рекламе или аналитике, так как такие скрипты напрямую не влияют на содержимое страницы.

Ответ 2

Я работаю с компанией веб-рекламы, и из того, что я слышал, некоторые браузеры (не знаю, с какими из них) позволят вам отбрасывать теги script на страницу, но не позволят вам для автоматического выполнения их содержимого.

Итак, чтобы снять это, вам нужно разбить тэг script на части, чтобы браузер не рассматривал его как тег script, а скорее как любые старые HTML-данные. Затем, когда DOM обрабатывается последовательно, следующее, что он оценивает, после записи тега script является... эй, тег script, который вы только что записали.

В этот момент оценивается и выполняется тэг script.

Ответ 3

Часто эти сценарии с введенным document.write имеют динамические строки, прикрепленные к ним, чтобы вырваться из кэширования или отправить некоторую информацию о клиенте на сервер объявлений. Я подозреваю, что ваш пример начался как-то вроде этого

document.write("<script type='text/javascript' src='http://addomain/someadd.js?"+extrastuff+"'><\/sc" + "ript>");

но со временем изменился, или был скопирован и изменен кем-то, кто не понимал бит extrastuff. Но, как вы его написали, нет никакой разницы: два пути, которые вы цитируете в своем вопросе, функционально одинаковы.

Ответ 4

Я стою исправлено, doc.write созданные скрипты блокируются - хуже, чем я, хотя heh:) - но как adblock avoider он действительно слаб, поэтому я могу только заключить его в механизм SOP для динамического добавления параметров в script запрос чрезмерно.

Используйте метод вставки DOM, избегая script блокировать детей.

Ответ 5

Этот метод позволяет избежать загрузки внешнего script, если активный скрипт отключен.

Ответ 6

Я не знаю наверняка, но они могут использовать его, поэтому все содержимое на веб-сайте загружается и отображается пользователю сначала, после чего объявления загружаются и отображаются.

Ответ 7

Чтобы сопоставить это с регулярным выражением и удалить легко:

<script type='text/javascript' src='http://addomain/someadd.js'></script>

а другой более сложный и может быть записан в разных форматах.

Я думаю, что это и есть причина.

Ответ 8

ИМХО, это не только бессмысленно, но даже неверно. Угловые скобки не экранированы, что сделает документ технически недействительным HTML (хотя он будет работать во всех основных браузерах, потому что они пытаются восстановить ошибки кодеров). И в случае, если один сайт его сайта с страницами XHMTL будет application/xml+xhtml, document.write() просто не будет работать.

Ответ 9

Способ сделать его несколько менее вероятно, что их добавление заблокировано.