我通过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>
答案 0 :(得分:5)
查看您的intro-file.cfm
文件会让事情更加清晰。
如果文件中的代码运行正常,我认为您可以从preview_wrapper
容器中获取尺寸。
只有两个问题:
$
中使用$('.loading-video').slideUp()
...,您是否应该在jquery.js
文件中包含intro-file.cfm
文件?##
中的选择器之前的双$('##preview_wrapper').width()
正确吗?假设一切正常,请尝试包含在您的fancybox脚本中:
scrolling: "no", // optional to avoid scrollbars inside fancybox
beforeShow: function(){
this.width = $('.fancybox-iframe').contents().find('#preview_wrapper').width();
this.height = $('.fancybox-iframe').contents().find('#preview_wrapper').height();
}
...从玩家的包装中获取尺寸。
答案 1 :(得分:1)
目前尚未计算iframe宽度。也许你可以像这样设置每个iframe的宽度/高度 - http://jsfiddle.net/vVKMF/
答案 2 :(得分:-1)
将autoSize
添加到:
$("a.fancybox-video").fancybox({
scrolling : 'no',
type : 'iframe',
autoSize : true,
helpers : {
title: null
}
});
或:
fitToView : true,