#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 для проверки браузера на виртуальном устройстве. В любом случае, есть ли у нас способ запустить ваш код, чтобы мы могли самостоятельно решить вашу проблему? Потому что прямо сейчас осталось совсем немного.