- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已将 iFrame Youtube 视频嵌入到我的页面中,我希望视频在用户单击“下一步”按钮以循环浏览视频轮播时暂停。在循环到下一个视频之前,我为事件视频创建了一个 YT 对象并尝试运行 pauseVideo()
功能。控制台报错:Uncaught TypeError: Object #<S> has no method 'pauseVideo'
.
令人费解的是我有console.log
在调用 pauseVideo()
之前播放器功能,我确实看到了 pauseVideo()
对象中可用的方法。有谁知道为什么我能够在 YT 对象中看到该方法,但控制台一直报告该方法不存在?
JS-Fiddle:http://jsfiddle.net/7WPe9/
// Load the IFrame Player API code asynchronously on DOM load
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// Triggered when user clicks 'next slide'
pauseActiveYoutubeVideos : function() {
var player = new YT.Player( $('#media .item.active iframe.ytplayer')[0] );
console.log( player ); //pauseVideo() is defined in this player object
player.pauseVideo(); //console reports 'Uncaught TypeError: Object #<S> has no method 'pauseVideo''
}
最佳答案
这里有很多小事情加起来会导致您的问题。首先,您必须发送一个 ID 作为参数而不是一个 jquery 对象(正如其中一条评论所指出的)。更重要的是,当您将 iFrame 绑定(bind)到播放器对象然后将其删除时,YT iframe API 会出现问题……您无法再重新绑定(bind)到同一个 iFrame。所以你的嵌套循环需要被替换。一种通常有效的策略是设置一个单独的跟踪对象,您在开始时为每个视频创建一个 YT.Player 对象,然后只跟踪哪个应该是事件的(这样您就知道要暂停哪个).尝试这样的事情(它应该只是在 <script>
标记中,而不是在 jQuery“就绪”函数中,以避免 iFrame API 的异步加载出现问题):
// Load the IFrame Player API code asynchronously on DOM load
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// Sets up player tracker, and init the carousel
var players={}, activePlayerId;
function onYouTubeIframeAPIReady() {
$('iframe.ytplayer').each(function() {
players[$(this).attr('id')]=new YT.Player($(this).attr('id'));
});
activePlayerId=$('iframe.ytplayer').first().attr('id');
$("#"+activePlayerId).addClass('active');
// Click on carousel next button
$('#next').on('click', function() {
players[activePlayerId].pauseVideo();
$("#"+activePlayerId).removeClass('active');
if ($("#"+activePlayerId).next().is('iframe')) {
activePlayerId=$("#"+activePlayerId).next().attr('id');
}
else {
activePlayerId=$('iframe.ytplayer').first().attr('id');
}
$("#"+activePlayerId).addClass('active');
});
}
关于javascript - Youtube - YT 对象没有方法 PauseVideo(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20199778/
我已将 iFrame Youtube 视频嵌入到我的页面中,我希望视频在用户单击“下一步”按钮以循环浏览视频轮播时暂停。在循环到下一个视频之前,我为事件视频创建了一个 YT 对象并尝试运行 pause
我正在尝试使用 YouTube API 来控制幻灯片中的一组播放器。我希望能够根据幻灯片所在的帧停止和播放视频。所以我根据帧的 id 将玩家推送到一个数组中。当名声发生变化时,我会停止当前的名声并开始
我正在为 iPad 开发一个应用程序,其中包含嵌入在 UIWebView 中的一个或多个 youtube 视频。我正在使用 Youtube iframe API。视频显示正常,用户可以正常使用正常控件
我成功地通过调用暂停了视频 surfaceViewRenderer.pauseVideo(); 但我无法恢复它。任何帮助都会有用。没有开始或恢复功能。 最佳答案 终于在一段时间后我看到了 surfac
示例代码: start // Load the IFrame Player API code asynchronously. var tag = document.createElemen
我正在使用 YouTube 播放器 API 并使用 seekTo() 函数,但它不起作用。事实上,playVideo() 或 pauseVideo() 也不起作用。这是代码: You will
当尝试在 IE8 上使用 pauseVideo() 播放 youtube 视频时,它给了我“对象不支持此属性或方法”, 这是我的嵌入式视频:
我是一名优秀的程序员,十分优秀!