Это то, что я придумал.Он был протестирован только в Google Chrome.
function changeobj() {
objs = document.getElementsByTagName('object');
for (i in objs) {
for (o in objs[i].children) {
if (objs[i].children[o].getAttribute('name') == 'movie') {
vidid = objs[i].children[o].getAttribute('value').split('/')[4].split('?')[0];
linkurl = 'http://www.youtube.com/watch?v='+vidid;
imgurl = 'http://img.youtube.com/vi/'+vidid+'/default.jpg';
link = document.createElement('a');
link.setAttribute('href',linkurl);
link.setAttribute('target','_blank');
img = document.createElement('img');
img.src = imgurl;
link.appendChild(img);
objs[i].innerHTML = '';
objs[i].appendChild(link);
}
}
}
}
function changeiframe() {
objs = document.getElementsByClassName('youtube-player');
for (i in objs) {
console.log(objs[i]);
vidid = objs[i].src.split('/')[4].split('?')[0];
linkurl = 'http://www.youtube.com/watch?v='+vidid;
imgurl = 'http://img.youtube.com/vi/'+vidid+'/default.jpg';
link = document.createElement('a');
link.setAttribute('href',linkurl);
link.setAttribute('target','_blank');
img = document.createElement('img');
img.src = imgurl;
link.appendChild(img);
objs[i].outerHTML = link.outerHTML;
}
}
window.onload = function () {
changeobj();
changeiframe();
}
Да, я знаю.В этом есть ошибка.Вот почему это не закончится.Я работаю над этим.
РЕДАКТИРОВАТЬ:
Я исправил оригинальные ошибки:
function changeobj() {
objs = document.getElementsByTagName('object');
for (i in objs) {
for (o in objs[i].children) {
if (objs[i].children[o].getAttribute && objs[i].children[o].getAttribute('name') == 'movie') {
vidid = objs[i].children[o].getAttribute('value').split('/')[4].split('?')[0];
linkurl = 'http://www.youtube.com/watch?v='+vidid;
imgurl = 'http://img.youtube.com/vi/'+vidid+'/default.jpg';
link = document.createElement('a');
link.setAttribute('href',linkurl);
link.setAttribute('target','_blank');
img = document.createElement('img');
img.src = imgurl;
link.appendChild(img);
objs[i].innerHTML = '';
objs[i].appendChild(link);
}
}
}
}
function changeiframe() {
objs = document.getElementsByClassName('youtube-player');
for (i in objs) {
if (objs[i].src) {
vidid = objs[i].src.split('/')[4].split('?')[0];
linkurl = 'http://www.youtube.com/watch?v='+vidid;
imgurl = 'http://img.youtube.com/vi/'+vidid+'/default.jpg';
link = document.createElement('a');
link.setAttribute('href',linkurl);
link.setAttribute('target','_blank');
img = document.createElement('img');
img.src = imgurl;
link.appendChild(img);
objs[i].outerHTML = link.outerHTML;
}
}
}
window.onload = function () {
changeobj();
changeiframe();
}
Есть еще одна ошибка, которая не будетзагрузите любой 4-й фильм, но я уверен, что этого будет достаточно для создания собственной версии.
РЕДАКТИРОВАТЬ: @evel - Если вы хотите поставить кнопку воспроизведения, вы можете поставитьчто-то вроде этого в вашем CSS:
.YOUTUBE_VID {
background-image: play.png;
background-repeat: none;
background-postion: center;
}
И затем добавьте класс по ссылке:
link.className += " .YOUTUBE_VID";
РЕДАКТИРОВАТЬ: Вместо использования цикла for,Я зацикливаю функцию.Кажется, это работает:
function changeiframe() {
objs = document.getElementsByClassName('youtube-player');
if (!objs[0]){return false;};
if (objs[0]) {
vidid = objs[0].src.split('/')[4].split('?')[0];
linkurl = 'http://www.youtube.com/watch?v='+vidid;
imgurl = 'http://img.youtube.com/vi/'+vidid+'/default.jpg';
link = document.createElement('a');
link.setAttribute('href',linkurl);
link.setAttribute('target','_blank');
img = document.createElement('img');
img.src = imgurl;
link.appendChild(img);
objs[0].outerHTML = link.outerHTML;
}
changeiframe();
}