使用JavaScript无法更改iframe src

时间:2013-03-19 17:22:20

标签: javascript iframe youtube

我正在尝试从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  
    }  
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

src是您可以直接访问的属性,而不是您的行elem.setAttribute('src', newsrc);,只需使用它:

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

设置src后,无需刷新iframe,因为设置src会自动执行此操作。见What's the best way to reload / refresh an iframe using JavaScript? 有关重新加载iframes的更多信息。 (基本上它指出您可以将src的{​​{1}}设置为自身以刷新iframe