【发布时间】:2014-12-08 01:16:57
【问题描述】:
我正在使用 iframe 标签在我的网页上加载一些视频。
<iframe id="player" type="text/html" width="640" height="280" src="https://www.youtube.com/embed/M7lc1UVf-VE?enablejsapi=1" frameborder="0">
</iframe>
最初,我提供了一个虚拟 url -“https://www.youtube.com/embed/M7lc1UVf-VE?enablejsapi=1”作为 iframe 标签的 src 属性,我用它来嵌入 YouTube 视频。我通过创建两个单独的函数将视频加载和视频播放功能分开。这是因为我在点击链接时排队播放视频,并且仅在启用某些设置时播放。
function playOnClick() {
player.playVideo();
}
function loadOnClick(videoId, videoURL) {
// videoURL contains the url of video in the following format - https://www.youtube.com/watch?v=videoID
/*
videoURL = videoURL.replace(/watch\?v\=/, 'embed/');
videoURL += '?enablejsapi=1';
jQuery('#player').attr('src', videoURL);
*/
player.cueVideoById(videoId);
}
上面的代码工作正常。但是,如果我取消注释动态更新 iframe 的 src 属性的注释部分,则 src 会更新并且视频也会排队,但它不会播放。
另外,当我尝试上面没有虚拟 src 属性的代码(取消注释部分的注释后)时,它会抛出这样的错误消息 -
Uncaught TypeError: Object # has no method 'loadVideoById'
我猜这可能是因为它无法识别 enablejsapi 设置为 true。
更新 iframe 的 src 属性并在不向 iframe 标签提供虚拟 src 的情况下使代码工作的最佳方法是什么?
提前致谢!
【问题讨论】:
标签: javascript jquery youtube youtube-api youtube-javascript-api