【发布时间】:2012-06-13 21:18:43
【问题描述】:
我通过 Fancybox 2 打开了一个播放视频的 IFrame:
HTML:
<a class="fancybox-video" href="/user/intro-file.cfm" rel="file_name" title="View Video">File Name</a>
Javascript:
$("a.fancybox-video").fancybox({
scrolling : 'no',
type : 'iframe',
helpers : {
title: null
}
});
视频是用户上传的,所以我不知道大小。我最终会在 Fancybox 上设置 maxHeight 和 maxWidth ,但我已经删除了它们以便于排除故障。
如何根据内容设置 Fancybox 的宽度?我的测试文件大约 400px 宽,fancybox 本身被设置为 830/800px 宽(外宽和内宽):screencap of too-wide fancybox http://img528.imageshack.us/img528/3872/fancyboxwidth.png
autoSize 和 fitToView 无效。 IFrame 页面上没有设置默认宽度的 CSS 或代码。如果我在 Fancybox 代码中强制设置宽度,它可以工作,但由于我的内容是动态的,它不适用于实时系统。
我还尝试从另一个询问高度调整大小的问题中调整一个函数,但它也不起作用:
beforeShow : function() {
$('.fancybox-iframe').load(function() {
$('.fancybox-inner').width($(this).contents().find('body').width());
});
}
编辑:添加了我尝试加载到 Fancybox 的 IFrame 页面的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body>
<cfoutput>
<script type="text/javascript" src="/Javascript/jwplayer.js"></script>
<script type='text/javascript'>
var max_video_width = 924;
jwplayer("preview").setup({
flashplayer: "/VideoPlayer/player.swf",
controlbar: "bottom",
file: "/videos/file_name",
stretching: 'file_name',
autostart: true,
events: {
onMeta: function(event) {
if (get_meta) {
if(event.metadata.width != undefined && event.metadata.height != undefined) {
get_meta = false;
if (event.metadata.width > max_video_width) {
var new_height = (max_video_width / (event.metadata.width / event.metadata.height))
jwplayer("preview").resize(max_video_width,new_height);
jwplayer("preview").stop();
$('##preview_wrapper').width(max_video_width).height(new_height);
}
else {
jwplayer("preview").resize(event.metadata.width,event.metadata.height);
jwplayer("preview").stop();
$('##preview_wrapper').width(event.metadata.width).height(event.metadata.height);
}
$('.loading-video').slideUp('fast',function(){$('.loading-video').remove()});
}
}
}
}
});
</script>
</cfoutput>
</body>
</html>
【问题讨论】:
-
那个
Iframe的内容是否来自同一个域? -
The video is user-uploaded, so I don't know the size... 视频是否至少有一个您可以识别的选择器? ....intro-file.cfm是否具有共同的 html 结构,还是因用户而异? ...在这种情况下,您应该显示intro-file.cfm的呈现 html 代码。 -
这个
$(this).contents().find('body').width()永远不会工作,因为body将始终以浏览器或包含它的 iframe 的 100% 宽度呈现,除非您为标签设置了特定的 css 尺寸。 -
@Zuul:是的,它在同一个域中 - 甚至域上的同一个文件夹。
-
@JFK:intro-file.cfm 确实有一个通用的 HTML 结构。我已将 intro-file.cfm 页面的代码添加到我的问题中。感谢您对 body.width 尝试的澄清。
标签: jquery iframe dynamic fancybox sizing