Как правильно использовать JavaScript postMessage API для виджетов Telegram? - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь встроить виджеты сообщений канала Telegram в боковую панель веб-страницы с меньшей шириной, чем iframe, созданный сценарием для встраивания. Скрипт использует postMessage API и обрабатывает событие message для установки высоты и ширины виджета, см. Функцию «postMessageHandler» здесь . Он передает высоту даже в postMessage, а также прослушивает подобное даже с родительской страницы, чтобы получить высоту и ширину iframe. Я хочу передать высоту и ширину фрейму.

Я пробовал обработчики $( document ).ready() и $(window).on('load',...) пропустить сообщение, но оно не работает.

$('iframe').on('load',function(){

    $(this).get(0).contentWindow.postMessage(
        {
            event:'resize',
            height:600,
            width:400
        },
        'https://t.me'
    );
});

Я могу прослушивать события iframe и видеть переданные данные, используя это:

$(window).on('message', function(evt){
    console.log(evt);
});

Сценарий для встраивания подобен этому, как указано в документации .

<script async src="https://telegram.org/js/telegram-widget.js?4" data-telegram-post="telegram/83" data-width="100%"></script>
...