Показать сообщение отдельно
  #1 (permalink)  
Старый 07.08.2021, 19:44
Интересующийся
Отправить личное сообщение для Oleg0 Посмотреть профиль Найти все сообщения от Oleg0
 
Регистрация: 07.04.2016
Сообщений: 28

Как добавить класс к блоку по клику на кнопку, которая загружена в iframe?
Всем привет!
Нужно помощь плохо разбирающемуся в скриптах.
Надеюсь, получится объяснить понятно.
Пытаюсь встроить вот эту штуку в корзину сайта https://docs.ozon.ru/logistics/delivery/widget/

Клиент выбирает пункт выдачи заказа и нажимает на кнопку "Забрать здесь". В этот момент генерируется такой код:
{"id":19068791345000,"type":"Пункт выдачи","address":"Россия, г. Москва, ш. Сколковское, д. 32","fittingClothesAvailable":true,"fittingShoesAv ailable":false}
Из которого мой скрипт берёт адрес пункта и вставляет его в поле с id=edit-panes-webform-nid3005-0--ozon - с этим мой скрипт справляется отлично (строка $('#edit-panes-webform-nid3005-0--ozon').val([person.address, person.id])
Одновременно с этим я хочу, чтобы в блок <div id="div_ozon" class="div_ozone"> добавился класс close_ozon (строка $('#div_ozon').toggleClass('close_ozon') - и вот этот код почему-то не срабатывает.

Подскажите, пожалуйста, что нужно исправить? Сначала я думал, что это из-за того, что загрузка виджета идёт в iframe, но ведь первая часть моего кода срабатывает отлично.

Вот весь код.

<div id="div_ozon" class="div_ozone">
<div class="close"></div>
<iframe title="Ozon widget" style="width: 100%; height: 100%; min-height: 450px; min-width: 320px; border: none; overflow: hidden" src="https://rocket.ozon.ru/lk/widget?token=.......%3D%3D&hidepostamat=true">Браузер не поддерживает iframe</iframe>
</div>

<script>
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event)
{
    // Важно не слушать чужие события
    if (event.origin !== "https://rocket.ozon.ru")
     return;
    console.log(event.data);
	var person = JSON.parse(event.data);
	$('#edit-panes-webform-nid3005-0--ozon').val([person.address, person.id]);
$('#div_ozon').toggleClass('close_ozon');
};

</script>
Ответить с цитированием