Fehler beim ausführen der 'postMessage' auf 'DOMWindow': Ziel/Herkunft mismatch http vs https

Entschuldige ich mich im Vorfeld als ich bin sehr verwirrt von meinem problem. Ich bin wirklich in einer Zwickmühle, denn dies verursacht ein problem auf meine Produktionsstätte.

Habe ich eine javascript-player auf meine Seite, welche Spiele durch die song-Listen, die gehostet werden kann, auf youtube, soundcloud oder vimeo. Gestern habe ich bemerkt, daß dieser Fehler die in der Regel entsteht, wenn Sie versuchen, laden Sie einen neuen song durch "hüpfen" mit den player-Tasten. Dieser Fehler gerade begonnen, in den letzten Tag oder zwei. Ich bin nicht zu sehen, etwas neues in der youtube-api release notes und dieser Fehler tritt auf mit Chrome, Firefox und Safari, also ist es wahrscheinlich nicht zu einer änderung in der browser. Etwas, das ich benutze, hat sich jedoch geändert, als ich noch nicht geschoben, neuen code in 18 Tagen.

Beispiel-Playliste ist hier: http://www.muusical.com/playlists/programming-music

Ich denke, dass ich isoliert haben, die Möglichkeit, den Fehler zu reproduzieren, hier sind die Schritte:

  1. Spielen ein youtube gehostet song.
  2. Springen zu einer anderen song in der Liste (ob durch drücken der skip Tasten oder direkt durch drücken der play-Taste die song ' s row-Element).

*Beachten Sie, dass, wenn das erste Lied in der playlist ist ein youtube-song, einfach überspringen zu einem anderen song sogar, ohne zu spielen die anfangs geladenen youtube-song zu produzieren den Fehler.

Im wesentlichen, der Fehler scheint aufzutreten, sobald Sie geladen haben, und/oder spielte ein youtube-song, und versuchen Sie zu überspringen und zu einem anderen song.

Lassen Sie mich wissen, wenn Sie finden, eine Ausnahme zu diesem Verhalten.

Sehe ich diese Fehlermeldung in der Konsole:

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

Lade ich den player mit youtube javascript api:

new YT.Player('playlist-player', {
      playerVars: { 'autoplay': 1, 'fs': 0 },
      videoId: "gJ6APKIjFQY",
      events: {
        'onReady': @initPlayerControls,
        'onStateChange': @onPlayerStateChange
      }
    })

Produziert dieses iframe:

<iframe id="playlist-player" frameborder="0" allowfullscreen="1" title="YouTube video player" width="640" height="360" src="https://www.youtube.com/embed/gJ6APKIjFQY?autoplay=1&amp;enablejsapi=1&amp;origin=http%3A%2F%2Fwww.muusical.com"></iframe>

Nach dem drücken der skip aus dem obigen youtube-song, das ist, was ich sehe, geladen in den iframe:

<iframe id="playlist-player" frameborder="0" allowfullscreen="1" title="YouTube video player" width="640" height="360" src=""></iframe>

Unterstütze ich youtube -, soundcloud-und vimeo-songs. Wie es scheint, einmal einen youtube-song geladen wird, wird der "Ursprung" ändert sich von http zu https. Ich glaube nicht, dass es notwendig ist, umfassen die Einbettung von Methoden für die anderen hosts als dieser Fehler tritt auf, selbst wenn die gesamte Playliste nur von youtube, und es tritt nicht in einer playlist, die nur aus songs von soundcloud und vimeo.

Dies ist auch, wie ich bin laden die youtube javascript:

//Load the IFrame Player API code asynchronously.
  var tag = document.createElement('script');
  tag.src = "https://www.youtube.com/player_api";
  var firstScriptTag = document.getElementsByTagName('script')[0];
  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

Bitte lassen Sie mich wissen, wenn Sie mich brauchen, um etwas verdeutlichen und danke im Voraus für ein Blick.

InformationsquelleAutor wuliwong | 2015-01-11

Schreibe einen Kommentar