I'm trying to pull a YouTube video id from an img and then pass it into an iframe to play an embedded video. My iframe is inside a div which is invisible until the img is clicked:
<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=".jpg" onclick="toggledisplay(this);" />
And here's the JavaScript. It works fine until this line elem.setAttribute('src', newsrc);
, at which point my page freezes up:
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 = "/" + explosion[4] + "?autoplay=1";
elem.setAttribute('src', newsrc); // <---- BROKEN LINE RIGHT HERE
elem.contentWindow.location.reload(); //to refresh the iframe
}
}
Thanks for any help!
I'm trying to pull a YouTube video id from an img and then pass it into an iframe to play an embedded video. My iframe is inside a div which is invisible until the img is clicked:
<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./vi/x-ROeKGEYSk/1.jpg" onclick="toggledisplay(this);" />
And here's the JavaScript. It works fine until this line elem.setAttribute('src', newsrc);
, at which point my page freezes up:
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./embed/" + explosion[4] + "?autoplay=1";
elem.setAttribute('src', newsrc); // <---- BROKEN LINE RIGHT HERE
elem.contentWindow.location.reload(); //to refresh the iframe
}
}
Thanks for any help!
Share Improve this question edited Mar 19, 2013 at 17:39 Ryan 5,6823 gold badges39 silver badges66 bronze badges asked Mar 19, 2013 at 17:22 Edward ChienEdward Chien 671 gold badge3 silver badges7 bronze badges1 Answer
Reset to default 6src
is an attribute you can access directly so instead of your line elem.setAttribute('src', newsrc);
just use this:
elem.src = "http://www.youtube./embed/" + explosion[4] + "?autoplay=1";
Once you set the src
there is no need to refresh the iframe
, as setting the src
will do that automatically. See What's the best way to reload / refresh an iframe using JavaScript?
for more info on reloading iframes
. (Basically it points out that you can set the src
of an iframe
to itself to refresh the iframe
).