我正在使用React-Youtube生成YouTube iframe
return (<Youtube
id="video-player"
videoId={id}
opts={config}
onReady={_onReady}
/>);
我的嵌入式播放器没有控件,因为它是背景覆盖。我想使用网站上的自定义滑块更改视频卷,而不是对播放器事件做出反应。
我的问题是访问YouTube IFRAME以进行API调用。
我想做类似:
的事情player.setVolume(event.target.value);
播放器是youtube iframe,事件是我自定义滑块的值。
我尝试使用
访问iframelet video = document.getElementById("video-player");
video.contentWindow.setVolume(20);
看起来可以工作,但是我得到了这个错误:
SecurityError: Permission denied to access property "setVolume" on cross-origin object
似乎我无法以这种方式访问iframe。
这是一个React项目,我正在使用的库在这里
根据文档,您应该能够做到这一点:
// callback method for the YouTube component
_onReady(event) {
// store the player somewhere safe
this.setState({
"player": event.target
});
}
然后,您可以通过此操作来更改卷:
// your volume value should be stored in the state
this.state.player.setVolume(this.state.volume);
您的代码不起作用的原因是因为您无法访问不同域中的iFrame中的内容。如果可能的话,您可以做很多令人讨厌的事情。