2

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

编码:

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

是什么最终让它为我工作。但是,我仍然不明白我在做什么。谁能给我解释一下?

4

1 回答 1

3

来自 MDN postMessage

window.postMessage是一种安全启用跨域通信的方法。通常,不同页面上的脚本只有当且仅当执行它们的页面位于具有相同协议(通常都是 http)、端口号(http 的默认值为 80)和主机(模document.domain 被两个页面设置为相同的值)。window.postMessage 提供了一种受控机制,以在正确使用时以一种安全的方式规避此限制。

所以它的作用是让你绕过相同的源策略并与其他域交谈。唯一的问题,并非所有浏览器都支持它。

于 2012-08-23T02:44:16.293 回答