代码之家  ›  专栏  ›  技术社区  ›  Dimitar Christoff

有没有一种可行的方法来对图像进行功能检测支持:data base64

  •  5
  • Dimitar Christoff  · 技术社区  · 15 年前

    沿着以下几条线使用:

    background:url(data:image/gif;base64,R0lGODlhIwAhALMAAAAAADQ0NENDQ25ubouLi6ioqLa2ttPT0/Dw8P///wAAAAAAAAAAAAAAAAAAAAAAACwAAAAAIwAhAAAIpQABCBxIsCCAAAYTKlw4cECCAQwjMnSY4KHEiwQpVrSIUaLGjRw7Kvy4EYEAkSNBljyJ0iDJiiZbulQJk6XMhjQTxLyJk+ZOngBe6rTJU+jPojmTKqXZc6nTpAKFPp0qsMDUqyoHWsWKleBWrk8LfgV5AKjYnGXNakWrdi3NtG3HbjTQtmrOAnUByK2It+7eBH3j5iSQVy5cv3PzegWsuCDExmYDAgA7) no-repeat center center;}
    

    很好,但当base64不可用时,我希望能够提供优雅的降级(CSS断言通过javascript)。

    显然,在V8之前的IE缺少这个功能,所以我可以通过浏览器浏览-但如果可能的话,我更希望检测它的功能。

    你对怎么做有什么想法吗?

    3 回复  |  直到 13 年前
        1
  •  6
  •   Fabien Ménager    15 年前
        2
  •  2
  •   Dimitar Christoff    14 年前

    使用上面的扩展mootools browser.features对象(如果有人认为它有用,Modernizer不支持它)

    http://www.jsfiddle.net/dimitar/5JT45/13/show/ https://gist.github.com/821370

    (function() {
        Browser.Features.base64 = null;
        var callback = function() {
            Browser.Features.base64 = this.width == 1 && this.height == 1;        
            // alert(Browser.Features.base64); // true || false
        };
    
        var img = new Image(), img = document.id(img) || new Element("img");
        img.onload = img.onerror = img.onabort = callback;
        // 1x1 px gif to test with
        img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
    
    })();
    
        3
  •  1
  •   Sido van Gennip    13 年前

    在他们的wiki上找到这个现代化的插件 https://github.com/Modernizr/Modernizr/issues/14 :

    Modernizr.addTest('datauri',function(){
      var data = new Image();
      data.onload = data.onerror = function(){
        return (this.width == 1 && this.height == 1);
      }
      data.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
    })