Как можно стилизовать самый внешний тег body с помощью JavaScript из внутреннего тега body iFrame?
<html>
<head>
</head>
<body>
<div id = "ad_tag" style = "width: 1px; height: 1px;">
<div id = "ad_container" style = "border: 0pt none;">
<iframe id = "ad_iframe" title = "title" name = "name" scrolling = "no" marginwidth = "0" marginheight = "0" style = "border: 0px none; vertical-align: bottom;" srcdoc = "" width = "1" height = "1" frameborder = "0">
<html>
<head>
</head>
<body topmargin = "0" leftmargin = "0" marginwidth = "0" marginheight = "0">
<script>
parent.document.body.style.background = "url('https://news.nationalgeographic.com/content/dam/news/photos/000/676/67655.jpg') no-repeat top center fixed #ffffff";
</script>
</body>
</html>
</iframe>
</div>
</div>
<div id = "content">
</div>
</body>
</html>
@CertainPerformance, да.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Лучше всего было бы отправить сообщение из фрейма, которое родитель (сайт) будет выполнять через слушателя. Итак, ваш iframe должен содержать код вроде:
<script>
window.parent.postMessage({
'func': 'changeBackground',
'message': ''
}, "*");
</script>
И ваш родитель (сайт) должен содержать слушателя вроде:
<script type = "text/javascript">
if (window.addEventListener) {
window.addEventListener("message", onMessage, false);
}
else if (window.attachEvent) {
window.attachEvent("onmessage", onMessage, false);
}
function onMessage(event) {
var data = event.data;
if (typeof(window[data.func]) == "function") {
window[data.func].call(null, data.message);
}
}
function changeBackground(message) {
$('div#backgroundwrapper').css({
'background-image': 'url("https:/example.com/example.jpg")',
$('div#backgroundwrapper').click();
var win = window.open( '%%CLICK_URL_ESC%%%%DEST_URL%%', '_blank');
win.focus();
});
}
</script>
В моем примере он поместит файл изображения в качестве фона в div с ID backgroundwrapper. В моем примере для изменения CSS и добавления метки клика используется jQuery, но это можно сделать и без него.
Есть ли у iframe разрешение на доступ к родительскому документу?