Получите доступ к объявлениям на главной странице googletag из стороннего кода - PullRequest
0 голосов
/ 21 июня 2019

Мой JS будет включен на страницу хоста как сторонний код, передаваемый через iframe. Когда он загружается, я хочу доставить новый контейнер div («myDiv») и получить доступ к уже существующему экземпляру Менеджера объявлений Google на верхней странице (который уже определил место для ссылки «myDiv») и использовать его для вызова googletag.display('myDiv') внутри div, который я доставил внутри iframe.

<!-- Top Host Page Source -->
<html>
    <head>
        <script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script>
        <script>
            var googletag = googletag || {};
            googletag.cmd = googletag.cmd || [];

            googletag.cmd.push(function() {
                googletag.defineSlot('/0123456789/Something', [320, 50], 'someOtherDiv').addService(googletag.pubads());
                googletag.defineSlot('/0123456789/Something/else', [320, 50], 'myDiv').addService(googletag.pubads());
                googletag.pubads().enableSingleRequest();
                googletag.enableServices();
            });
        </script>
    </head>
    <body>
        <h1>My Host Top Page</h1>

        <!-- This displays an existing ad on the top host page -->
        <div id="someOtherDiv" style="width:320px; height:50px;">
            <script>
                googletag.cmd.push(()=> { googletag.display('someOtherDiv'); });
            </script>
        </div>

        <!-- 
            Normally if the host page were displaying the 'myDiv' ad here, we'd uncomment the block below,
            but we want to run this functionality from inside the iframe's mycode.html below.
        -->
        <!-- 
        <div id="myDivId" style="width:320px; height:50px;">
            <script>
                googletag.cmd.push(()=> { googletag.display('myDiv'); });
            </script>
        </div>
        -->

        <hr>

        <!-- My code arrives in here and loads mycode.html -->
        <iframe style="width:320px; height:50px;" src="//example.org/mycode.html"></iframe>

    </body>
</html>
<!-- mycode.html Source -->
<html>
    <body>
        <div id="myDiv">
            <script>
                var myGoogletag = top.googletag;

                // Calling top.googletag.pubads().getSlots() here seems to see the slot set up with the 'myDiv' reference.
                // ...But the line below does not do anything.
                myGoogletag.cmd.push(function() { myGoogletag.display("myDiv"); });
            </script>
        </div>
    </body>
</html>

Я ожидаю увидеть объявление в iframe, но вместо этого ничего не происходит, и нет ошибок.

...