| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2665 人关注过本帖
标题:新人求助: js如何自动判断gif和jpg
只看楼主 加入收藏
smmy
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-8-31
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
新人求助: js如何自动判断gif和jpg
这是一个点击gif图片才会播放的js  演示:http://mingpin.co/gif.html
代码如下:
程序代码:
var Gifffer = function() {
    var images, d = document, ga = 'getAttribute', sa = 'setAttribute';
    images = d && d.querySelectorAll ? d.querySelectorAll('[data-gifffer]') : [];
    var createContainer = function(w, h, el) {
        var con = d.createElement('DIV'), cls = el[ga]('class'), id = el[ga]('id');
        cls ? con[sa]('class', el[ga]('class')) : null;
        id ? con[sa]('id', el[ga]('id')) : null;
        con[sa]('style', 'position:relative;cursor:pointer;width:' + w + 'px;height:' + h + 'px;');
        // creating play button
        var play = d.createElement('DIV');
        play[sa]('style', 'width:60px;height:60px;border-radius:30px;background:rgba(0, 0, 0, 0.3);position:absolute;left:' + ((w/2)-30) + 'px;top:' + ((h/2)-30) + 'px;');
        var trngl = d.createElement('DIV');
        trngl[sa]('style', 'width:0;height: 0;border-top:14px solid transparent;border-bottom:14px solid transparent;border-left:14px solid rgba(0, 0, 0, 0.5);position:absolute;left:26px;top:16px;')
        play.appendChild(trngl);
        // dom placement
        con.appendChild(play);
        el.parentNode.replaceChild(con, el);
        return {c: con, p: play };
    }
    var process = function(el) {
        var url, con, c, w, h, play, gif, playing = false, cc, isC;
        url = el[ga]('data-gifffer');
        w = el[ga]('data-gifffer-width');
        h = el[ga]('data-gifffer-height');
        el.style.display = 'block';
        c = document.createElement('canvas');
        isC = !!(c.getContext && c.getContext('2d'));
        if(w && h && isC) cc = createContainer(w, h, el);
        el.onload = function() {
            if(isC) {
                w = w || el.width;
                h = h || el.height;
                // creating the container
                if(!cc) cc = createContainer(w, h, el);
                con = cc.c;
                play = cc.p;
                con.addEventListener('click', function() {
                    if(!playing) {
                        playing = true;
                        gif = d.createElement('IMG');
                        gif[sa]('style', 'width:' + w + 'px;height:' + h + 'px;');
                        gif[sa]('data-uri', Math.floor(Math.random()*100000) + 1);
                        setTimeout(function() {
                            gif.src = url;
                        }, 0);                        
                        con.removeChild(play);
                        con.removeChild(c);
                        con.appendChild(gif);
                    } else {
                        playing = false;
                        con.appendChild(play);
                        con.removeChild(gif);
                        con.appendChild(c);
                        gif = null;
                    }
                });
                // canvas
                c.width = w;
                c.height = h;
                c.getContext('2d').drawImage(el, 0, 0, w, h);
                con.appendChild(c);
            }
        }
        el.src = url;
    }
    for(var i=0; i<images.length; i++) process(images[i]);
}


这个js有个缺点,就是不管你的图片是否为gif,还是jpg,png等等格式,都会自动在图片加上一个播放的图标。求助高人是否能在此基础上加入自动判断是否为非gif格式时不在上面加播放按钮。只有当图片为gif格式时才会执行点击播放的语句。在此先谢谢了,本人是新手喜欢折腾网站,但此问题困扰很久了。
2015-08-31 20:50
tini8
Rank: 2
等 级:论坛游民
帖 子:8
专家分:41
注 册:2015-8-30
收藏
得分:10 
只能判断后缀名吧,当然这样判断的不准,gif动画也可以用jpg后缀,至于图片格式到底是什么,javascript应该是没有这个功能
2015-08-31 21:02
smmy
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-8-31
收藏
得分:0 
回复 2楼 tini8
用以判断后缀名应该就可以了,要不普通非gif动图上都加了个播放按钮不人性化。希望有高手来帮忙吧。
2015-08-31 21:10
smmy
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-8-31
收藏
得分:0 
冰镇柠檬汁儿 版主,快来帮新手指导下思路。
2015-09-01 16:46
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:10 
那判断以下img.src.lastIndexOf('.gif')不就可以了,如果有,就加,没有就不加

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2015-09-02 12:01
zbbok
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-10-22
收藏
得分:0 
2015-10-22 17:09
快速回复:新人求助: js如何自动判断gif和jpg
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024472 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved