簡體   English   中英

在iFrame中應用CSS

[英]Applying CSS within an iFrame

我正在嘗試將廣告圖像的寬度從像素更改為百分比。 我正在使用Google DoubleClick或“ DFP”。 它會自動將您的廣告圖片放入iframe中,從而很難更改圖片的實際尺寸。

因此,我將圖像寬度從像素更改為百分比的方法是,將div(即網頁的90%)包裹在圖像廣告周圍,然后將圖像的寬度設置為100%,這樣當包裝寬度隨瀏覽器寬度調整大小而變化,其中的圖像將始終填充包裝。 但是我不知道如何使所有這些工作正常,因為圖像位於iframe(愚蠢的DFP廣告管理系統!!!!

這是包裝器的CSS代碼:

#div-gpt-ad-1362958263281-0 {width:90%; border:1px solid black;}

然后是包裝器中的iframe:

iframe {width:100%;}

然后最后是我嘗試了一些CSS選擇器和不同div類的實際圖像:

.img_ad, a#aw0, iframe>.img_ad, iframe>#google_image_div>.img_ad {width:100%; display:block; border:1px solid red !important;}

如果您在廣告圖片上檢查Google Chrome瀏覽器中的元素,則會看到CSS並未應用於該圖片。 我要做的就是將圖像寬度更改為一個百分比,也將高度更改為auto 真的應該這么難嗎? 由於圖像位於iframe中,這是否有可能? DFP是否讓我為失敗做好准備? 我只是不知道...但是,我將如何更改圖片廣告的代碼? 任何幫助都將使您真正受到贊賞! :)

這是jsFiddle: http : //jsfiddle.net/EptwH/3/

我發現可以將同步加載與Google的“智能iframe”功能結合使用,從而可以將鏈接從其iframe中分離出來並將其放置在DOM中。

請注意,我將dfp代碼的相同ID傳遞給AdjustGoogleAd方法。 我搞砸了width / height屬性,因為我們位於響應式網站上。

<script type='text/javascript'>
    (function () {
        var useSSL = 'https:' == document.location.protocol;
        var src = (useSSL ? 'https:' : 'http:') +
        '//www.googletagservices.com/tag/js/gpt.js';
        document.write('<scr' + 'ipt src="' + src + '"></scr' + 'ipt>');
    })();
</script>
<script type='text/javascript'>
    googletag.defineSlot('{AD SLOT HERE}', [WIDTH, HEIGHT], 'dfp-div-id').addService(googletag.pubads());
    googletag.pubads().enableSyncRendering();
    googletag.pubads().enableSingleRequest();
    googletag.enableServices();

    $(function () {
        AdjustGoogleAd('dfp-div-id');
    });

    function AdjustGoogleAd(bannerId) {
       var banner = $('#' + bannerId);
       var contents = $('#' + bannerId + ' iframe').contents();

       contents.find('a').clone().attr('id', bannerId + '_a').appendTo('#' + bannerId);
       var newLink = $('#' + bannerId + '_a');
       newLink.siblings().remove();
       newLink.find(".img_ad").removeAttr('height').removeAttr('width');
    }

</script>

使用HTML:

<div id='dfp-div-id'>
     <script type='text/javascript'>
         googletag.display('dfp-div-id');
     </script>
</div>

這是一個jsfiddle,上面有一個我很確定要執行的操作的示例...所以是可能的...是否違反DFP條款是另一個問題!

http://jsfiddle.net/e3dUT/ (調整窗格的大小以使其正常工作,目前僅能在chrome中工作100%,但這應該只是對其進行一些調整。)

$.dfp({
    dfpID: '12589173',
    afterAllAdsLoaded: function ($adUnits) {
        $('iframe').attr('width', '100%').attr('height', '100%');
        $adUnits.each(function () {
            $contents =  $(this).find('iframe:first').contents();
            $contents.find('img').width('100%').height('auto');
        });
    }
});

它使用了我創建的jQuery DFP插件,但是只需做一些工作,您也可以使用普通javascript來實現此功能。

這里的iframe位於其他域中。 您無法使用CSS或JS修改其內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM