0

同一页面 ( www.goo.gl/xLAhN ) 使用以下代码在 iframe 中嵌入大小为 640x390 的 youtube 视频:(尝试了 3 种 youtube 嵌入代码变体,结果均相同)

`<iframe id="player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/GxTl1Ykbuww?enablejsapi=1&origin=origin-domain.com" frameborder="0"></iframe>`

同一页面使用以下代码在 iframe 中嵌入了一个 250x250 的 Adsense 横幅:

`<script type="text/javascript"><!--
google_ad_client = "ca-pub-xxxxxxxxxxxxx";
/* test */
google_ad_slot = "xxxxxxx";
google_ad_width = 250;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>`

youtube 视频 100% 的时间以 250x250 显示。查看源代码,Youtube iframe 现在附加了一个样式元素,带有 250x250 指令。

`<iframe id="player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/GxTl1Ykbuww?enablejsapi=1&amp;origin=origin-domain.com" frameborder="0" style="width: 250px; height: 250px;"></iframe>` 

如果删除了 adsense 代码,则 youtube 视频会以正确的大小加载。

请帮忙,5天后我认为这与CORS有关,但网上没有关于这个问题的信息。不知何故,adsense 被允许克服跨域限制,并以自己的大小注入 youtube iframe。

4

1 回答 1

0

问题与 jquery 有关,它是美化 iframe 的主题的一部分

var win = jQuery(window),
 iframes = jQuery('iframe:not(.slideshow iframe):not( iframe.no_resize)',container),
 adjust_iframes = function() {
    iframes.each(function() {
        var iframe = jQuery(this),frame_parent_w = iframe.parent().width(),proportions = 16/9;
        if(this.width && this.height) {
            proportions = Math.round(this.width / this.height * 1000) / 1000;
            iframes.css({
                width:frame_parent_w,height: frame_parent_w / proportions});
        }
    });
};
adjust_iframes();
win.smartresize(adjust_iframes);

在我将 :not(inside iframe) 添加到第二行之后(因为 Adsense 总是将其 iframe 包含在内部标签中,所以所有内容都按预期呈现,上面的代码忽略了 Adsense iframe 设置。

于 2013-05-03T13:07:38.243 回答