【问题标题】:Working locally with YouTube iframe API: "Failed to execute 'postMessage' on 'DOMWindow"在本地使用 YouTube iframe API:“无法在 'DOMWindow' 上执行 'postMessage'”
【发布时间】:2018-05-27 02:21:41
【问题描述】:

我在本地服务器上工作,正在试验 YouTube iframe API。

加载 iframe 时,我收到错误消息“无法在 'DOMWindow 上执行 'postMessage'”。

如何消除此错误?

【问题讨论】:

    标签: youtube-api


    【解决方案1】:

    我在 IFRAME API 页面中尝试了Getting Started,并且能够使用python -m SimpleHTTPServer 8080 顺利运行示例。

    您的问题可能与您使用 iframe API 的方式有关。查看此SO post 了解更多信息。

    【讨论】:

      【解决方案2】:

      我认为我们可以自定义 YT.Player 的 sendMessage

      playerOptions.playerVars.origin = window.location.origin or your domain.
      this.youtubePlayer = new YT.Player(element,playerOptions);
      this.youtubePlayer.sendMessage = function (a) {
         a.id = this.id, a.channel = "widget", a = JSON.stringify(a);
         var url = new URL(this.h.src), origin = url.searchParams.get("origin");
         if (origin && this.h.contentWindow) {
             this.h.contentWindow.postMessage(a, origin)
         }
      }
      

      我在我的项目中使用了这个函数来解决。 (来源answer)

      【讨论】:

        猜你喜欢
        • 2016-12-11
        • 2018-05-29
        • 2018-11-24
        • 2022-10-19
        • 2018-05-30
        • 2019-11-05
        • 2016-08-20
        • 2019-12-09
        相关资源
        最近更新 更多