这是我得到的错误信息:

Failed to execute 'postMessage' on 'DOMWindow': The target origin provided
('https://www.youtube.com') does not match the recipient window's origin 
('http://localhost:9000').

我见过其他类似的问题,其中目标源是http://www.youtube.com,收件人源是https://www.youtube.com,但没有一个像我的问题一样,目标是https://www.youtube.com,源是http://localhost:9000。

我不明白这个问题。有什么问题吗? 我该怎么解决呢?


当前回答

我得到了同样的错误。我的错误是enablejsapi=1参数在iframe src中不存在。

其他回答

我在尝试嵌入一个条纹定价表时得到了类似的错误消息:

通过自定义WordPress短代码通过PHP添加嵌入代码 或者使用JavaScript动态地将代码追加到页面(即使使用setTimeout()延迟来确保DOM被加载也不起作用)。

我可以在我的WordPress网站上解决这个问题,方法是在块编辑器中使用纯html代码将代码添加到WordPress页面本身。

这帮助了我(Vue.js)

在vue-youtube上找到

mounted() {
  window.YTConfig = {
    host: 'https://www.youtube.com/iframe_api'
  }
  const host = this.nocookie ? 'https://www.youtube-nocookie.com' : 'https://www.youtube.com'

  this.player = player(this.$el, {
    host,
    width: this.width,
    height: this.height,
    videoId: this.videoId,
    playerVars: this.playerVars
  })
  ...
}

更新: 像这样神奇地工作:

...
youtube(
  video-id="your_video_code_here"
  nocookie
)
...
data() {
  return {
    playerVars: {
      origin: window.location.href,
    },
  };
},

我得到了同样的错误。我的错误是enablejsapi=1参数在iframe src中不存在。

至少在我的实例中,这似乎是一个无害的“未准备好”条件,API会不断重试,直到成功为止。

我在任何地方都能找到2到9个(在我最糟糕的测试中,通过蜂窝热点打开了20个标签的2009年的《化石书》)....但之后视频功能正常。一旦它运行我的postmessage基于调用seekTo肯定工作,还没有测试其他。

我认为错误的描述是误导性的,最初与玩家对象的错误使用有关。

当切换到滑动条中的新视频时,我也遇到了同样的问题。

当简单地使用这里描述的player.destroy()函数时,问题就消失了。