我建立了一个通过iframe嵌入的播放器。如果嵌入了两个播放器,那么我想停止另一个播放器。因此,问题是,是否可以使用postMessage
在两个子iframe之间进行通信,而无需拥有父级? Vimeo正在以某种方式这样做。如果我嵌入了两个vimeo播放器,并且一个播放,然后另一个播放,则第二个播放器停止第一个播放。怎么样? (证明:https://jsfiddle.net/3fy14orw/2/)
在播放器中,我正在使用postMessage
在播放器播放时在父窗口上触发一个事件。我确认这是可行的。我尝试使用实际的原点以及“ *”作为原点。
//in my player
window.parent.postMessage(data, "*");
其他玩家怎么知道?我已经尝试过了,
//tried adding this in my player
window.parent.addEventListener('message', function(evt) {});
但这会引发错误。
"SecurityError: Blocked a frame with origin..."
我还尝试命名框架窗口,以及通过window.parent.frames对象访问它们,但这也引发了CORS问题。
假设:
答案 0 :(得分:1)
Kinda hacky,但您可以在localStorage上建立一个沟通渠道。帧可以通过写入localStorage来发送消息,然后通过不断轮询localStorage来读取消息来读取消息。