2011-07-13 13 views
6

Kullanıcılarımız tarafından çalıştırılan tarayıcıda desteklenen özellikleri saptamak için Modernizr kullanıyorum, şu ana kadar çok iyi. Ama base64 uyumluluğunu test ederken teorik bir soruna karşı çıktım. Bu desteğin yaması ayrıntılı olarak here ve IE8- it only allows base64 encoded images of up to 32KB ile garip bir durum dışında çalışır.Base64 URI desteği için daha iyi bir test (JS'de büyük bir base64 kodlu bir resim oluşturabilir miyim?)

JS dosyamda 32 KB uzunluğunda bir base64 dizesi yerleştirmek istemiyorum, bu yüzden çok miktarda bloat ekleyeceğim. Yani, JS kullanarak 32KB geçerli bir resim oluşturabilir miyim? Bir ipte bir çeşit deseni 32KB'ye ulaşana kadar tekrar etmeyi düşünüyorum. Ya da belki de mevcut bir küçük ipi (Modernizr yaması'ndaki gibi) alıp, sonunda geçerli bir görüntüyle sonuçlanan gereksiz veri ekleyerek.

Mevcut bir görüntüyü işlemek dışında, base64 kodlaması hakkında hiçbir şey bilmiyorum. Herhangi bir fikri olan var mı?

cevap

3

Ben düşünüyorum Bir cevabım var. Satır sonları ekleyerek işi yapmak için göründüğünü bulana kadar (manuel ekleyebilirsiniz PNG kaynağı vb tekrarlanan metin parçaları) teknikleri her türlü çalıştı:

var b64test = new Image(); 
    b64test.onload = function() { 
     alert("yay!") 
    } 

    b64test.onerror = function() { 
     alert("boo") 
    } 

    /* A 1x1 GIF image */ 

    var base64str = "R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==" 
    while (base64str.length < 33000) { 
     base64str = "\r\n" + base64str; 
    } 

    b64test.src= "data:image/gif;base64," + base64str; 

IE8'de Başarısız, IE9 çalışır ve diğerleri. Yine de herhangi bir alternatifi duymak isterim.

İlgili konular