【问题标题】:YouTube API requires postMessage(). Why?YouTube API 需要 postMessage()。为什么?
【发布时间】:2012-08-23 02:30:29
【问题描述】:

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

代码:

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

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

【问题讨论】:

    标签: javascript api youtube


    【解决方案1】:

    From MDN postMessage

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

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

    【讨论】:

    • 有趣。需要注意的一点是,最新的 YouTube 嵌入代码使用 iframe。
    • 谢谢。在我看来,只有 IE 7 及以下版本不支持它。这对我来说已经足够了!谢谢!
    猜你喜欢
    • 2020-02-15
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 2019-06-09
    • 2018-05-29
    • 1970-01-01
    相关资源
    最近更新 更多