YouTube API需要postMessage()。为什么?

时间:2012-08-23 02:30:30

标签: javascript api youtube

我一直在尝试让YouTube JS API的stopVideo()方法工作一段时间。每个人都说它就像在iframe元素上调用它一样简单,但我能够让它工作的唯一方法是通过一个名为postMessage()的方法,我在其他人的Stackoverflow帖子中找到它。

代码:

$('iframe').postMessage('{"event":"command","func":"stopVideo","args":""}', '*')

最终让它为我工作。但是,我仍然不明白我在做什么。任何人都可以向我解释这个吗?

1 个答案:

答案 0 :(得分:3)

From MDN postMessage

  

window.postMessage是一种安全启用跨源的方法   通讯。通常,仅允许不同页面上的脚本   当且仅当执行它们的页面是相互访问时才相互访问   在具有相同协议的位置(通常都是http),端口号   (80是http的默认值)和host(modulo document.domain   由两个页面设置为相同的值)。 window.postMessage   提供了一种控制机制来规避这种限制   正确使用时安全的方式。

所以它的作用是让你绕过same origin policy并与其他域交谈。只有问题,并非所有浏览器都支持它。