4

我正在尝试从 img 中提取 YouTube 视频 ID,然后将其传递到 iframe 以播放嵌入的视频。我的 iframe 位于一个 div 中,在单击 img 之前它是不可见的:

<div id="testimonialbackground" style="display:none;">  
    <a href="#" onclick="toggledisplay(this);">Click here</a> to close the video  
    <iframe id="testimonialframe" src="" frameborder="0" allowfullscreen></iframe>  
</div>  
<img src="http://img.youtube.com/vi/x-ROeKGEYSk/1.jpg" onclick="toggledisplay(this);" />

这里是 JavaScript。它工作正常,直到这一行elem.setAttribute('src', newsrc);,此时我的页面冻结:

function toggledisplay(obj) {  
    var div = document.getElementById('testimonialbackground');  
    var elem = document.getElementById('testimonialframe');  
    if (div.style.display == "block") {  
        div.style.display = "none";  
        elem.setAttribute('src', "");  
    }  
    else {  
        div.style.display = "block";  
        var explosion = obj.src.split("/");  
        var newsrc = "http://www.youtube.com/embed/" + explosion[4] + "?autoplay=1";  
        elem.setAttribute('src', newsrc); // <---- BROKEN LINE RIGHT HERE
        elem.contentWindow.location.reload(); //to refresh the iframe  
    }  
}

谢谢你的帮助!

4

1 回答 1

6

src是您可以直接访问的属性,因此elem.setAttribute('src', newsrc);只需使用以下命令即可:

elem.src = "http://www.youtube.com/embed/" + explosion[4] + "?autoplay=1";

一旦你设置了src,就不需要刷新了iframe,因为设置src会自动完成。请参阅使用 JavaScript 重新加载/刷新 iframe 的最佳方法是什么? 有关重新加载的更多信息iframes。(基本上它指出您可以将srcan设置iframe为自身以刷新iframe)。

于 2013-03-19T17:30:05.637 回答