Итак, вот что я придумала:
Вместо того, чтобы предотвращать этот JS, я могу поместить его в iframe - это превращает его в среду песочницы, чтобы она больше ничего не могла навредить. Вот ты где:
Сначала нужно проанализировать внешний скрипт, потому что я передаю его в виде строки:
function parse_str_to_js($txt) {
$txt = str_replace('\\', '\\\\', $txt);
$txt = str_replace('"', '\\"', $txt);
$txt = str_replace("\r\n", '\n', $txt);
$txt = str_replace("\n", '\n', $txt);
$txt = str_replace('<', '\u003C', $txt);
$txt = str_replace('>', '\u003E', $txt);
return $txt;
}
Тогда в HTML вместо:
<php echo $advertisement_script; ?>
следует заменить на заполнитель:
<div id="advertisement"></div>
А в JavaScript будет создан iframe:
$(function(){
$('#advertisement').html('<iframe id="iframe_advertisement"/>');
var advertisement = "<?php echo parse_str_to_js($advertisement); ?>";
document.getElementById('iframe_advertisement').contentWindow.document.write(advertisement);
});