Как остановить сбой браузера (Chrome) при загрузке изображения в окне 32 бит - PullRequest
1 голос
/ 26 апреля 2019

В теге image, когда base64 установлен в атрибуте image src, браузер падает, - ОС: - 32-битное окно. - Версия: - 6.1 (Windows 7, Windows Server 2008 R2) - Chrome версия: - 73.0.3683.103

Чтобы получить текстовый файл base64, выполните следующий код c # в visual studio

 var bytImageData = File.ReadAllBytes(fileWithPath + ".png");
                    string strBase64ImageData = Convert.ToBase64String(bytImageData, 0, bytImageData.Length);
                    File.WriteAllText(fileWithPath + ".txt", strBase64ImageData);

Javascript код

<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>        
    <script>
        $(document).ready(function () {
            load();           
        });

        var _imageByteStream;       
        function load() {
            $("#scream").attr("src", "");
            $("#performanceText").val($("#performanceText").val() + '\n' + "Before image load :" + window.performance.memory.usedJSHeapSize);

            $.ajax({

                url: "Content/Images/ImageStream" + $("#imageSize").val().replace('MB', '') + ".txt",
                dataType: "TEXT",
                contentType: 'application/json',
                async: false,
                success: function (response) {
                    _imageByteStream = response;
                }
            });

            $("#scream").attr("src", "data:image/png;base64," + _imageByteStream);
            $("#performanceText").val($("#performanceText").val() + '\n' + "After image load :" + window.performance.memory.usedJSHeapSize);
            _imageByteStream = null;
        }


    </script>
</head>
<body>
    <div>
        <table>
            <tr>
                <td>
                    <div style="width:400px;height:300px;"><img id="scream" alt="The Scream" width="400" height="300" /></div>
                </td>
                <td>
                    <div style="width:400px;height:300px;">
                        <textarea style="width:280px;height:300px;" id="performanceText"></textarea>
                    </div>
                </td>
            </tr>
            <tr>
                <td>
                    <select style="margin-top:10px;" id="imageSize">                      
                        <option>50MB</option>
                        <option>57MB</option>                      
                    </select>
                </td>                
            </tr>
            <tr>
                <td><button style="margin-top:10px;" onclick="load()">Load</button></td>                
            </tr>
        </table>
    </div>
</body>
</html>

Как воспроизвести:

  1. Выберите 50 МБ из выпадающего списка. Нажмите на кнопку загрузки.
  2. Как только изображение будет отображено, выберите 57 МБ из выпадающего списка. Нажмите на кнопку загрузки.
  3. Повторяйте шаги 1 и 2, пока браузер не выйдет из строя.
  4. Большую часть времени повторяется сбой браузера 3-4 повторения.
...