PWA отображается черным при использовании большого двоичного объекта

#javascript #html #blob

#javascript #HTML #большой двоичный объект

Вопрос:

Я создаю автономный установщик PWA с использованием Blob, но когда я делюсь и добавляю на главный экран на IOS, PWA отображается полностью черным. Вот мой код:

 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
function install(){
   var autodate, enapp, data;

   // Getting current PWA
   $("#autodate").load("https://mysite.github.io/pwa/app1.html");
   autodate = document.getElementById('autodate');

    setTimeout(() => {
        // Encode
        encapp = btoa(autodate.innerHTML);

        // Blob
        blobt('text/html', 'data:text/html;base64,' encapp)
    }, 300);
};

function blobt(type, data){
    const base64data = data;
    const contentType = type;

    const byteCharacters = atob(base64data.substr(`data:${contentType};base64,`.length));
    const byteArrays = [];

    for (let offset = 0; offset < byteCharacters.length; offset  = 1024) {
        const slice = byteCharacters.slice(offset, offset   1024);

        const byteNumbers = new Array(slice.length);
        for (let i = 0; i < slice.length; i  ) {
            byteNumbers[i] = slice.charCodeAt(i);
        }

        const byteArray = new Uint8Array(byteNumbers);

        byteArrays.push(byteArray);
    }
    const blob = new Blob(byteArrays, {type: contentType});
    const blobUrl = URL.createObjectURL(blob);

    window.open(blobUrl, '_blank');
}
</script>
  

Я не вижу, что могло бы заставить его не работать. Он отлично выполняет все в браузере, но как только вы устанавливаете его на главный экран, он просто отключается. Я делаю что-то не так? Есть ли решение для этого?

Заранее спасибо.

Комментарии:

1. Это зависит от вашего manifest.json . Но я предполагаю, что приложение не позволит вам использовать window.open для открытия новой вкладки, потому что это было бы не очень похоже на поведение веб-приложения . Не могли бы вы включить свой манифест? И не могли бы вы уточнить, почему вы выбрали этот подход?

2. @EmielZuurbier window.open работает. и у меня нет манифеста.

3. Что ж, если у вас есть устройство OSX, вы можете использовать симулятор XCode для запуска виртуального экземпляра OSX. Затем вы могли бы использовать Safari devtools для проверки браузера на виртуальном устройстве. В любом случае, есть ли у нас способ запустить ваш код, чтобы мы могли самостоятельно решить вашу проблему? Потому что прямо сейчас осталось совсем немного.