Replace an embed or iframe youtube video by an tumbnail + link to vídeo

不羁岁月 提交于 2019-12-04 15:58:05

This is what I came up with. It has only been tested in 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();
    }

Yes, I know. There is a bug in it. That's why it won't finish. I'm working on it.

EDIT:

I fixed the original bugs:

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();
    }

There is another bug that won't load any 4th movie, but I'm sure this should give you enough to make your own version.

EDIT: @evel - If you want to put a play button, you can put something like this into your CSS:

.YOUTUBE_VID {
background-image: play.png;
background-repeat: none;
background-postion: center;
}

And than add it the class to the link:

link.className += " .YOUTUBE_VID";

EDIT: Instead of using the for loop, I'm looping the function. This seems to be working:

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();
    }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!