2011-07-13 6 views
6

私はModernizrを使用して、ユーザーが実行しているブラウザでサポートされている機能を検出しています。しかし、私はbase64との互換性をテストする際に理論的な問題に挑戦しました。このサポートのパッチはhereであり、IE8- it only allows base64 encoded images of up to 32KBの奇妙なケースを除いて動作します。Base64 URIのサポートのためのより良いテスト(JSで大きなbase64でエンコードされたイメージを作成できますか?)

JSファイルの中に32KB長いbase64文字列を埋め込むことを本当に望んでいません。膨らみが狂ってしまいます。では、JSを使用して32KBの有効な画像を作成できますか?私はそれが32KBの長さに達するまで、ある種のパターンを文字列内で繰り返すことを考えています。または、Modernizrパッチのような既存の小さな文字列を取り、最後に有効な画像を生成する迷惑データを追加することもできます。

私は、既存の画像を操作する方法以外に、base64エンコーディングについては何も知らないと知っています。誰にもアイデアはありますか?

答えて

3

I だと思います。私は答えがあります。私は改行を追加する作業を行うに表示されることが判明するまで、私は(私は手動で追加することができますPNGソースなどで繰り返されるテキストチャンク)技術のすべての種類を試してみました:

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に失敗し、IE9で動作し、その他。しかし、私はどんな選択肢も聞いてみたい。

関連する問題