2014-09-05 78 views
1

对不起,如果这看起来像我的早期问题的转发,但事实并非如此。 这是另一种不同方法的问题。将postMessage命令的参数传递给YouTube的iframe

我有这样的iframe:

<iframe id="video1" width="970" height="546" src="https://youtube.com/embed/9IYRC7g2ICg?enablejsapi=1&autoplay=1&controls=0&loop=1&playlist=9IYRC7g2ICg&showinfo=0&modestbranding=0" frameborder="0" allowfullscreen></iframe> 

上的自定义按钮,点击后我们手动暂停视频,这工作得很好:

<script type="text/javascript"> 
    jQuery(document).ready(function($) { 
     $('#button1').click(function() { 
      $('#video1')[0].contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*'); 
     }); 
    }); 
</script> 

pauseVideo在这里https://developers.google.com/youtube/iframe_api_reference列出的命令。

我的问题是:我在某种程度上完全不能使用需要参数的命令,例如seekTo(seconds:Number, allowSeekAhead:Boolean)

欲在视频跳转到0:20,我想:

$('#video1')[0].contentWindow.postMessage('{"event":"command","func":"seekTo","args":"20, true"}', '*'); 

,但没有成功。 我可能把参数放在错误的地方,因为这是我第一次使用iframes的postMessage函数,我觉得有点新手 - 就像那个意义上的。

有人能帮助我吗? :)

+1

你尝试' “ARGS”:20,真]'? – 2014-09-05 11:42:08

+0

sweeet,作品! :) – 2014-09-05 12:35:27

+0

出于好奇(这是真诚的好奇心...不是一个拙劣的尝试,建议你做错了什么),为什么你使用postMessage而不是用YouTube iframe API创建一个对象?这种方法会带来什么好处? – jlmcdonald 2014-09-06 04:11:24

回答

2

试试这个:

var data = {event: 'command', func: 'seekTo', args: [20, true]}; 
var message = JSON.stringify(data); 

$('#video1')[0].contentWindow.postMessage(message, '*');