1. JavaScript / Говнокод #19146

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    if (/Version\/5[^S]+Safari/.test(navigator.userAgent)) {
                    // https://twitter.com/sonnypiers/status/187513545397776384
                    var xhr = new XMLHttpRequest();
                    xhr.open('GET', user_photo, true);
    
                    xhr.responseType = 'arraybuffer';
    
                    xhr.onload = function(e) {
                        if (this.status == 200) {
                            var uInt8Array = new Uint8Array(this.response);
                            var i = uInt8Array.length;
                            var binaryString = new Array(i);
                            while (i--) {
                                binaryString[i] = String.fromCharCode(uInt8Array[i]);
                            }
                            var data = binaryString.join('');
    
                            var base64 = window.btoa(data);
    
                            var image = new Image();
                            image.onload = function() {
                                ...
                            };
                            image.src = 'data:image/jpeg;base64,' + base64;
                        }
                    };
    
                    xhr.send();
                    return;
                }
    
                var image = new Image();
                image.onload = function() {
                    ...
                };
                image.crossOrigin = 'anonymous';
                image.src = user_photo;

    потому что старое сафари не умеет image.crossOrigin

    Запостил: makc3d, 07 Декабря 2015

    Комментарии (5) RSS

    • > потому что старое сафари не умеет image.crossOrigin

      старый софт не умеет новые фичи. news at 11.
      Ответить
      • это ещё не всё. обратите внимание на строку 24 и представьте, как изменится код на строке 13, когда они начнут грузить пнг, гиф и т д.
        Ответить
        • > и представьте, как изменится код на строке 13, когда они начнут грузить пнг, гиф и т д.

          в строке 24 появится `this.getResponseHeader('content-type')`?
          Ответить
          • о, замечательно. хоть что-то не так плохо, как я думал. надеюсь оно хоть работает
            Ответить
            • это же всего лишь жабаскрипт. язык незначительный - и как следствие все его проблемы незначительны. муахахаххахаха!
              Ответить

    Добавить комментарий