Rev. 2.73

var isDataURISupported = (function() {
   var testImage = new Image();
  testImage.src =
    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';

  if (testImage.complete) return true;
  else testImage.onload = function() {
    isDataURISupported = true;
  };
  testImage.onerror = function() {
    isDataURISupported = false;
  };
  var version = document.uniqueID &&
    parseFloat(navigator.userAgent.match(/MSIE ([\d]\.[\d][\w]?)/)[1]) || 0;
  return !(version >= 5 && version <= 7);
})();

isDataURISupported; // true or false

아시다시피, IE8부터 Base64 인코딩을 지원합니다. 덩달아 IE8의 IE7모드에서도 Base64 인코딩을 지원합니다. 그래서 브라우저 별로 지원여부를 구분하는 것은 구리다는 생각이 들어서 만들어 보았습니다. 작은 문제가 하나 있는데 "onerror" 또는 "onload" 이벤트에 의해 감지되는 브라우저는 즉각적인 확인이 불가능 할 수 있다는 것입니다. 그래서 보호 차원으로 IE계열 인지를 확인하게 했습니다. 참고로 IE8의 IE7모드는 "testImage.complete" 조건을 타기 때문에 즉시 확인 가능합니다.(입맛에 맞게 때려 고쳐 쓰세요)

Comments

Got something to add? You can just leave a comment.

Your Reaction Time!

captcha

avatar