gpt4 book ai didi

JQuery,淡入 YouTube iframe 嵌入

转载 作者:行者123 更新时间:2023-12-03 22:52:07 24 4
gpt4 key购买 nike

我正在尝试淡入 YouTube iframe 嵌入,但它仅适用于 IE9,所有其他最新浏览器(Safari、Opera、Chrome、Firefiox)均无效。无论不透明度设置为 0,iframe 都会立即显示。

我使用的是 Windows。

我哪里错了?

ps:这与 Vimeo youtube iframe 嵌入配合得很好。

JsFiddle:

http://jsfiddle.net/jgtSS/26/

最佳答案

出于安全原因,当 iframe/最近层的 Alpha channel 级别(不透明度/背景)降低时,内联框架将变得完全可见。因此,即使不透明度设置为 0.99999,框架也会显示。

我为此问题创建了一个解决方案:创建两个大小相同的图层,并将它们添加到 iFrame 父级之后。

  1. 为第一张图片添加背景,这是视频的预览
  2. 将第二个 div 的背景设置为页面背景,例如白色

然后,将第二个 DIV 设置为不透明度 0 的动画。第一张图像的背景变得更加明显。在动画结束时,使用回调函数隐藏第一个 div:

要允许用户在动画期间激活视频,请将单击事件处理程序绑定(bind)到 DIV,这会立即隐藏图层,并调用内嵌视频的 playVideo 方法。

要调用 playVideo 方法,您需要对嵌入视频的引用。由于您尚未使用 YouTube 视频 API 创建视频,因此无法使用全局变量来访问视频。不久前,我创建了一个函数来调用嵌入视频上的方法。
阅读:YouTube iframe API: how do I control a iframe player that's already in the HTML?

最终代码

我在fiddle 创建了一个实例:http://jsfiddle.net/jgtSS/34/ 。完整代码如下所示。

<html><head>
<style>
#holder, #ID-of-first-div, #ID-of-second-div{
position:absolute;
width:320px;
height:240px;
top:0px;
left:0px;
}
#ID-of-first-div, #ID-of-second-div {
background: #FFF;
}
#btn1{
position:absolute;
background:#09C;
width:40px;
height:40px;
top:250px;
left:0px;

}
</style>
<script type="text/javascript">
$(window).load(function() {
$('#btn1').click(function(){
var vid_id = $('#player').get(0).src.match(/embed\/([^?]+)/)[1];
var vid_bg = 'http://i2.ytimg.com/vi/'+vid_id+'/hqdefault.jpg';
$('<img>').attr("src", vid_bg).css({width:'100%',height:'100%',border:'none'}).appendTo('#ID-of-first-div');
$('#ID-of-second-div').animate({opacity: 0 }, 3000, function(){
$('#ID-of-first-div').hide();
});
var both = $('#ID-of-first-div, #ID-of-second-div');
both.click(function(){
both.hide();
callPlayer('player', 'playVideo');
});
});
});
/*
* @author Rob W (https://stackoverflow.com/questions/7443578/youtube-iframe-api-how-do-i-control-a-iframe-player-thats-already-in-the-html/7513356#7513356)
* @description Executes function on a framed YouTube video (see previous link)
* For a full list of possible functions, see:
* http://code.google.com/apis/youtube/js_api_reference.html
* @param String frame_id The id of the div containing the frame
* @param String func Desired function to call, eg. "playVideo"
* @param Array args (optional) List of arguments to pass to function func*/
function callPlayer(frame_id, func, args){
if(!document.getElementById(frame_id)) return;
args = args || [];

/*Searches the document for the IFRAME with id=frame_id*/
var all_iframes = document.getElementsByTagName("iframe");
for(var i=0, len=all_iframes.length; i<len; i++){
if(all_iframes[i].id == frame_id || all_iframes[i].parentNode.id == frame_id){
/*The index of the IFRAME element equals the index of the iframe in
the frames object (<frame> . */
window.frames[i].postMessage(JSON.stringify({
"event": "command",
"func": func,
"args": args,
"id": 1/*Can be omitted.*/
}), "*");
}
}
}
</script>
</head><body>
<div id="holder">
<iframe id="player" type="text/html" width="320" height="240"
src="http://www.youtube.com/embed/u1zgFlCw8Aw?wmode=transparent?enablejsapi=1"
frameborder="0"></iframe>
</div>
<div id="ID-of-first-div"></div>
<div id="ID-of-second-div"></div>

<div id="btn1"></div>
</body></html>

关于JQuery,淡入 YouTube iframe 嵌入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7865904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com