Как динамически добавить тег прожектора - PullRequest
0 голосов
/ 17 мая 2018

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

У меня есть div: <div id="bodyTrackingCode"></div>, который находится прямо под открывающим тегом тела.

Я использую .html для вставки кодов отслеживания: $ ('# bodyTrackingCode'). Html (Info.BodyTracking);

Это прекрасно работает для всех типов кода Google Analytics.К сожалению, у меня возникла проблема с меткой прожектора.Я полагаю, что это из-за «document.write» в коде.

Код выглядит так:

<!-- Start of DoubleClick Floodlight Tag: Please do not remove Activity name of this tag: xxxxxx to Call-Landing URL of the webpage where the tag is expected to be placed: xxxxxxx This tag must be placed between the <body> and </body> tags, as close as possible to the opening tag. Creation Date: 05/01/2018 --> <script type="text/javascript"> var axel = Math.random() + ""; var a = axel * 10000000000000; document.write('<iframe src="https://3948978.fls.doubleclick.net/activityi;src=xxxxxxx;type=hea-l0;cat=jj-he0;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=' + a + '?" width="1" height="1" frameborder="0" style="display:none"></iframe>'); </script> <noscript> <iframe src="https://3948978.fls.doubleclick.net/activityi;src=xxxxxxx;type=hea-l0;cat=jj-he0;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1?" width="1" height="1" frameborder="0" style="display:none"></iframe> </noscript> <!-- End of DoubleClick Floodlight Tag: Please do not remove -->

Я попытался экранировать тег end iframe и тег end script,Это дает мне консольную ошибку синтаксической ошибки неожиданный токен <</p>

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

Я понятия не имею, как заставить это работать правильно.Помогите !!!

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

document.write только добавит некоторый контент в html, когда он будет выполнен при загрузке страницы.Если страница уже загружена, то document.write заменит весь HTML-файл тем, что написано, см. Описание здесь: https://www.w3schools.com/jsref/met_doc_write.asp

Поскольку вы добавляете код с jQuery после загрузки страницы,Вы можете заменить document.write(... на

jQuery('body').append(...

или

jQuery('#bodyTrackingCode').append(...
0 голосов
/ 17 мая 2018

Если у вас есть document.write, которым вы не можете управлять, вы можете сделать это, вставив его перед загрузкой скрипта:

var myWrite = document.write, myWriteLN=document.writeln, dbhtml;
document.write=function(str) {
  dbhtml += str;
}
$(function() {
  $('#bodyTrackingCode').html(dbhtml);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...