首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用iframe嵌入应用程序接口在同一页面上使用多个YouTube播放器

使用iframe嵌入应用程序接口在同一页面上使用多个YouTube播放器
EN

Stack Overflow用户
提问于 2017-04-21 11:25:14
回答 1查看 391关注 0票数 0

多个按钮将能够附加到同一个页面,而这些页面又有自己的youtube ID。该按钮可以被点击,这将打开一个模式(弹出)内的youtube视频。我有一个单独的实例,如何让javascript代码处理多个按钮呢?

HTML (php)如下所示:

代码语言:javascript
运行
AI代码解释
复制
<button id="play-icon-<?php echo $bID; ?>" class="button" target="_blank">Watch our show reel</button>

<div class="remodal video-modal" data-remodal-id="video-modal-<?php echo $bID; ?>">
  <button data-remodal-action="close" class="modal-close"><span class="icon-close"></span></button>
  <div class="video-wrapper">
    <div id="player-container" class="screen"></div>
  </div>
  <span class="loader"></span>
</div>

然后我有了触发模态和控制视频的javascript代码:

代码语言:javascript
运行
AI代码解释
复制
$(function() {
  openModal('<?php echo $youtube_ID; ?>');
});


function openModal(video_id) {
  var playButton = $('#play-icon-<?php echo $bID; ?>');
  var modal = $('[data-remodal-id=video-modal-<?php echo $bID; ?>]');
  var settings = {
    hashTracking: false
  }
  var inst = modal.remodal(settings);
  var device = $.browser.device = (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase()));

  playButton.on('click', function(e) {

    if (device) {

      var yturl = '//www.youtube.com/embed/' + video_id + '?rel=0&showinfo=0&modestbranding=1&autoplay=1&controls=0';
      $('body').append('<span id="close-video-modal" class="icon-close"></span><iframe id="large-modal-banner-video" src="' + yturl + '"></iframe>');

    } else {

      inst.open();
      play_video(video_id);

    }

  });
}

var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

var modelPlayer;
var modelPlayerDefaults = {
  autoplay: 0,
  autohide: 1,
  modestbranding: 0,
  rel: 0,
  showinfo: 0,
  controls: 0,
  disablekb: 1,
  enablejsapi: 0,
  iv_load_policy: 3
};

function play_video(id) {
  modelPlayer = new YT.Player('player-container', {
    videoId: id.toString(),
    events: {
      'onReady': onModalPlayerReady,
      'onStateChange': onModelPlayerStateChange
    },
    playerVars: modelPlayerDefaults
  });
}

function onModelPlayerStateChange(e) {
  if (e.data === 1) {
    $('.loader').fadeOut();
    $('#player-container').addClass('active');
  } else if (e.data === 0) {
    var currentModal = $('#player-container.active').closest('.video-modal');
    var inst = currentModal.remodal();
    inst.close();
    $('#player-container').removeClass('active');
  } else {
    $('#player-container').removeClass('active');
    $('.loader').show();
  }
}

function onModalPlayerReady(e) {
  modelPlayer.playVideo();
}

$(document).on('closed', '.video-modal', function() {
  modelPlayer.destroy();
});

$(document).on('click tap', '#close-video-modal', function(e) {
  e.preventDefault();

  $('#close-video-modal, #large-modal-banner-video').fadeOut(function() {
    $(this).remove();
  });

});

所需要的是将这些代码包含到一个可重用的函数中,任何帮助都会很好。

EN

回答 1

Stack Overflow用户

发布于 2017-04-21 18:24:41

这听起来很让人困惑。你要打开并控制多个弹出窗口吗?他们会集中精力的!

如果您只是希望从按钮/链接将视频加载到弹出窗口中,这是可能的。

我把它放在我做的"youtube游乐场“里。

其中之一是THIS one。选择User uploads并放入用户播放列表中查看。

我打开一个由iframe填充的弹出窗口。

这反过来会向它发送基本信息,以便它知道要加载什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43541516

复制
相关文章
如何使NSLog只在Debug模式下有效
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/50757136
用户1451823
2018/09/13
7690
【Groovy】编译时元编程 ( 编译时方法拦截 | 在 MyASTTransformation#visit 方法中找到要拦截的方法 )
方法中 , 其中 ASTNode[] nodes 参数是 AST 语法树根节点数组 , 每个数组元素都是一个 ModuleNode 对应一个 Groovy 脚本 ;
韩曙亮
2023/03/30
3170
在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
  今天在使用Tomcat8部署完成项目做测试的时候,发现有的接口会报错400,后端提示在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
彼岸舞
2020/11/05
14.4K6
在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
大牧絮叨设计模式:工厂方法模式
工厂方法模式是一种创建模式,又被称为虚拟构造子模式(Virtual Constructor)或者多态性工厂模式(Polymoriphoic Factory)。工厂方法模式是目标是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。
大牧莫邪
2019/07/16
4070
大牧絮叨设计模式:工厂方法模式
某种矿机的预防脚本
iptables -I OUTPUT -p tcp -m multiport --dport 80,443 -m string --string "tor2web.io" --algo bm -j DROP
用户1168904
2021/05/17
7490
文本的词嵌入是什么?
词嵌入(Word embeddings)是一种单词的表示形式,它允许意义相似的单词具有类似的表示形式。
StoneDemo
2018/02/11
4.3K0
文本的词嵌入是什么?
RedHat Linux文本模式下乱码解决方法
如果在安装RedHat Linux时选择中文未缺省语言,在文本模式下会出现乱码情况,对于在CLI(command-line interface,命令行界面)方式下调试程序时诸多不便,因为出错信息全是乱码,下面说明乱码问题如何解决:
用户8710643
2021/06/11
2K0
使用 Python 拆分文本文件的最快方法是什么?
在 Python 中拆分文本文件可以通过多种方式完成,具体取决于文件的大小和所需的输出格式。在本文中,我们将讨论使用 Python 拆分文本文件的最快方法,同时考虑代码的性能和可读性。
很酷的站长
2023/02/18
2.6K0
使用 Python 拆分文本文件的最快方法是什么?
文本在计算机中的表示方法总结
本文为 AI 研习社社区用户 @Dendi 独家投稿内容,欢迎扫描底部社区名片访问 @Dendi 的主页,查看更多内容。
AI研习社
2019/10/29
3.1K0
文本在计算机中的表示方法总结
IE的浏览器模式、文本模式
IE的浏览器模式,用于切换IE针对该网页的默认文本模式、对不同版本浏览器的条件注释解析、决定请求头里userAgent的值。它在浏览器发出请求之前就已经确定,网站没有办法修改这个值。它代表的是用户以何种浏览器访问网站。
菜的黑人牙膏
2019/01/21
1.3K0
flutter - 方法 '[]'在null上被调用,但在inApp中有效
这意味着检索数据需要很短的时间, 试试这个。数据为空时,它将在短时间内通过进度指示器
徐建国
2021/08/03
9840
如何学习 React - 有效的方法
React 是一个免费的开源前端 JavaScript 库,用于通过将您的应用程序划分为更小的组件来构建复杂的用户界面。它由 Facebook 和开发者社区维护。
玖柒的小窝
2021/09/14
5.4K0
但是,在通过移动数组的上升周期中找到指定元素
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117323.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/06
3970
设计模式(1)—什么是设计模式?设计模式的六大原则是什么?
软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。设计模式使代码开发真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。只有夯实地基搭好结构,才能盖好坚壮的大楼。也是我们迈向高级开发人员必经的一步。即12字真言:设计模式是设计经验的总结
AlbertYang
2020/09/08
6040
影响FMEA有效应用的因素是什么?
在制造业和工业生产中,FMEA(潜在失效模式及后果分析)是一种常见的质量管理工具,用于识别和预防潜在的故障和缺陷。但是,想要有效的应用FMEA并非易事,这其中需要考虑多种因素,下面我们来详细了解一下。
用户9972271
2023/04/18
3290
野生码农的逆袭之路:在跨界中找到自我
本文由CDA作者库成员HarryZhu原创,并授权发布。 CDA作者库凝聚原创力量,只做更有价值的分享。 Day Job and Night Job 我非常认同《黑客与画家》里的 Paul Graham 说的一句话:码农需要一个 day job for food,也需要一个 night job for fun。和格雷厄姆不同的是,我的night job不是一个画家,而是一个作家,是的,一个技术专栏的撰稿人。通常,晚餐之后,刷一遍自己的 Feedly 和 GitHub,搞搞黑科技,这就是一种
CDA数据分析师
2018/02/24
1.2K0
野生码农的逆袭之路:在跨界中找到自我
浅谈在ASP.NET中数据有效性校验的方法
作为一名程序员,一定要对自己编写的程序的健壮性负责,因此数据的校验无论在商业逻辑还是系统实现都是必不可少的部分。
Java架构师必看
2021/03/22
9700
在Kubernetes有效使用CoreDNS
作者:InfraCloud 技术领导、开源贡献者 Sanket Sudake。客座文章最初在InfraCloud 的博客[1]上发表。
CNCF
2021/07/07
9220
在Dubbo中,模板方法模式 用的真6!
Dubbo 是阿里的开源框架,后面捐献给了Apache,所以现在都叫Apache Dubbo,但是在日常中,很多人也更喜欢简称Dubbo。Apache Dubbo 是一款微服务框架,为大规模微服务实践提供高性能 RPC 通信、流量治理、可观测性等解决方案, 涵盖 Java、Golang 等多种语言 SDK 实现。
田维常
2022/11/25
6210
在Dubbo中,模板方法模式 用的真6!
[Oracle] 导出到文本的方法
Oracle 将查询结果导出到文本的方法。 Oracle 表在直接导出时,格式容易很混乱,不易读,比如下面这样: 为了使导出的文本可读性强,可以增加以下参数: set line 1000
tonglei0429
2021/09/08
6840

相似问题

在集合中查找最不同的元素

20

获取MySQL中最不同的记录

20

需要帮助计算最不同的书籍

13

根据不同的列选择最不同的产品

10

选择产品中最不同的项目

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档