惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Help Net Security
B
Blog RSS Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
Netflix TechBlog - Medium
S
SegmentFault 最新的问题
The Cloudflare Blog
I
InfoQ
美团技术团队
博客园 - 三生石上(FineUI控件)
MyScale Blog
MyScale Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 司徒正美
L
LangChain Blog
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
Y
Y Combinator Blog

Fooleap's Blog

渴望理想 | Fooleap's Blog 19 年底一些事 | Fooleap's Blog 藉秋风,跑起来 | Fooleap's Blog 一个人去跑步 | Fooleap's Blog 8 月的跑量仿佛是那暑假的作业 | Fooleap's Blog 三伏天跑步那么难受,为何还要跑? | Fooleap's Blog 解决小程序开发“当前系统代理不是安全代理” | Fooleap's Blog 忘却配速的夏日跑步 | Fooleap's Blog 六月天时“带水”跑步更爽 | Fooleap's Blog 出来混迟早要还的 | Fooleap's Blog 跑步不能当饭吃 | Fooleap's Blog 将京东移动端详情页链接转为 PC 端 | Fooleap's Blog 不是热就是雨 | Fooleap's Blog 这半月,我跑了 11 个 520 | Fooleap's Blog 跑完流汗一时爽,一直流汗一直爽 | Fooleap's Blog 初夏夜跑 | Fooleap's Blog Electron 中打开 QQ 临时会话 | Fooleap's Blog 春节期间的培隆角 | Fooleap's Blog 从春天跑到夏天 | Fooleap's Blog 晨雾中奔跑 | Fooleap's Blog 漫步春雨中 | Fooleap's Blog 跑在木棉花下 | Fooleap's Blog 我在春节依然坚持跑步 | Fooleap's Blog 伴随着日出跑步 | Fooleap's Blog 没有最好,只有更好 | Fooleap's Blog 电子气温计 | Fooleap's Blog 渡亭小学的金凤花 | Fooleap's Blog 随心而跑 | Fooleap's Blog 2018 跑步小结 | Fooleap's Blog 在 gVim 中使用“非等宽字体” | Fooleap's Blog
弹出层中的视频全屏问题 | Fooleap's Blog
fooleap · 2017-09-06 · via Fooleap's Blog

前几天,在做一个站时,需要弹出层播放 YouTube 视频。网站采用 jQuery,并使用 Layer[1] 做弹层。需要显示 YouTube 的视频,从简使用 YouTube 简单的 IFrame Player API[2] 调用视频。

JS 代码段如下:

function onPlayerReady(event) {
    event.target.playVideo();
}
var player;
layer.open({
    type: 1,
    title: false,
    closeBtn: 0,
    area: ['800px', '450px'],
    content: '<div id="player"></div>',
    shadeClose: true,
    skin: 'layer-video',
    success: function(){
        player = new YT.Player('player', {
            height: '450',
            width: '800',
            videoId: 'M7lc1UVf-VE',
            events: {
                'onReady': onPlayerReady,
            }
        });
    }
});

网页使用中出现个小问题,就是弹层中的 YouTube 视频全屏后看不到了。实际上它是已经有执行全屏操作的,理所当然想到 CSS 的定位问题。我记得之前使用自己写的弹层并播放腾讯视频全屏没问题,问题可能在于 Layer。

我在 YouTube API 文档里找不到全屏的相关 event,后来发现直接监听网页的全屏事件即可,具体可以看 Fullscreen API[3]。我的想法是监听全屏,当有全屏时操作 DOM,让视频能显示出来。

调试来调试去心好累,搞得都想放弃 Layer,直接为这视频写个简单的弹出层。后来灵机一动,直接把弹层的主容器作为 YouTube API 操作的容器。也即:

function onPlayerReady(event) {
    event.target.playVideo();
}
var player;
layer.open({
    type: 1,
    title: false,
    closeBtn: 0,
    area: ['800px', '450px'],
    shadeClose: true,
    skin: 'layer-video',
    success: function(){
        var playerId = $('.layer-video').attr('id');
        player = new YT.Player(playerId, {
            height: '450',
            width: '800',
            videoId: 'M7lc1UVf-VE',
            events: {
                'onReady': onPlayerReady,
            }
        });
    }
});

问题解决。

参考资料

本文历史

  • 2017 年 09 月 06 日 完成初稿

最近更新

猜你喜欢