我正在使用 SwipeView ( http://cubiq.org/swipeview ) 在触摸屏设备上创建可滑动的幻灯片。这对图像来说很简单,但我也想在幻灯片中包含一个 Vimeo 视频。不幸的是,因为 iFrame 会为自己捕获您的滑动输入(我相信至少正在发生这种情况),一旦您到达视频播放器幻灯片,除非您点击分页,否则您将无法再从它滑开。这是不可接受的。
我的解决方案是将视频隐藏在页面上的某处(使用 display: none; 或 height: 0; 或任何有效的方法),并在幻灯片中使用带有触发视频播放的点击事件的图像。即使视频被隐藏,当它播放时,它也应该全屏播放(至少在 iPhone 上)。
当我在我的桌面浏览器上测试它时,这项技术运行良好,但它在 iPhone 上的表现很奇怪。出于测试目的,视频显示在幻灯片下方。如果我加载页面并点击幻灯片,它什么也不做。但是,如果我通过点击实际的视频播放器来播放视频,一旦视频关闭,我可以通过点击幻灯片再次播放视频。基本上,一旦通过播放器播放视频,我就可以通过 API 播放视频,但必须先使用播放器一次。
这是我的代码:
// Append the "hidden" video player to the page
$('.slider-container').append("<div class='mobile-video-slide'><iframe id='slideshow-player' src='//player.vimeo.com/video/81295681?title=0&byline=0&portrait=0&color=8bd4ee&api=1&player_id=slideshow-player' width='500' height='281' frameborder='0' webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div>");
// Get the player object
var iframe = $('#slideshow-player')[0],
player = $f(iframe);
// When the video is ready
player.addEvent('ready', function() {
// Add the click event to the slide
$('#play-video').on('click', function() {
// Play the video
player.api('play');
// Don't jump the page
return false;
});
});
我通过测试确定 player.ready 事件工作正常,图片的点击事件工作正常。问题似乎完全在于player.api('play')
通话。任何帮助或实现此目的的替代方法将不胜感激。