Сохранение файла из Chrome IOS не работает?

#javascript

#javascript

Вопрос:

Я пытаюсь заставить это работать, я хочу иметь возможность загружать файл с веб-сайта, я использую вызываемый пакет NPM, file-saver а также попробовал решение в одном из ответов здесь, да, это работает, но проблема в том, что он не работает в Chrome iOS, по какой-то причине кто-нибудь нашелчто может быть решением этой проблемы? Неужели Chrome настолько строг, что не позволяет вам ничего загружать?

 const saveLocalStorage = () => {
    // Grap the whole ls object and save
    const ls = JSON.stringify(localStorage);
    // Using file Saver NPM
    //FileSaver.saveAs(new Blob([ls]), 'Plan.Online', { autoBom: true });
    const downloadBlob = (fileName: string, blob: any) => {
      const link = document.createElement('a');
      link.href = URL.createObjectURL(blob);
      link.target = '_blank';
      link.download = fileName;
      document.body.appendChild(link);
      link.click();
    };

    const blob = new Blob([ls], {
      type: 'text',
    });
    downloadBlob('Data.txt', blob);
  }; 

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

1. iOS chrome? нет. В iOS chrome представляет собой тонкую оболочку вокруг встроенного браузера Safari. Многие вещи в iOS Chrome заблокированы. (например, «Добавить на главный экран») Вопрос. Работает ли программа в iOS Safari?

2. @zipzit это работает как шарм в Safari

3. Совсем не ясно, чего вы пытаетесь достичь. Когда я пишу прогрессивные веб-приложения, я должен сообщить своим пользователям, что они должны использовать собственный браузер ОС. Android = Chrome, iOS = Safari. Точка. Заменителей нет. Apple явно не хочет универсальной функциональности кода браузера.

Ответ №1:

Если ваше приложение работает в iOS Safari, но не в браузере Chrome iOS, проблема может быть в том, как Apple настроила Chrome.

Из этой ссылки

Google Chrome теперь доступен для iPhone и iPad, но прежде чем вы слишком обрадуетесь, вам нужно понять, что это вовсе не Chrome. Это Safari от Apple с интерфейсом «chrome». Фактический браузер, рендеринг и движок javascript — это 100% Apple Safari.

Причина проста. Apple хочет контролировать и заставлять людей создавать собственные приложения и, таким образом, ограничивает производительность веб-приложений в сторонних приложениях. … Это чисто антиконкурентное поведение, которое ограничивает выбор и заставляет людей создавать собственные приложения.

Когда я пишу Progressive Web Apps (PWA), я должен сообщить своим пользователям, что они должны использовать собственный браузер ОС. Android = Chrome, iOS = Safari. Точка. Заменителей нет. Apple явно не хочет универсальной функциональности кода браузера.

Примечание: я знаю, что ссылка выше довольно старая. Но, насколько я знаю, суть фактов остается в силе. Примечание: я подхожу к этому с точки зрения разработки прогрессивных веб-приложений. Единственная функция, на которую я действительно полагаюсь, — это возможность «Сохранить ссылку на домашнюю страницу». И это просто недоступно в Chrome на iOS, даже сейчас. Не уверен, что у вас точно такой же вариант использования.

Ответ №2:

я обнаружил, что это обсуждение может быть связано! инженер Chrome говорит: «Ах, это потому, что Chrome на iOS еще не внедрил новые методы делегирования WKDownload, но в настоящее время над этим ведется работа (см. crbug.com/1252380 )»

https://bugs .webkit.org/show_bug.cgi?id=167341#c66

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

1. Как я понял, это сделано специально для безопасности, а не для ошибки.

2. @Richardson я на самом деле могу открыть файл PDF ext, но не CSV ext, используя file-saver, есть ли у вас какие-либо ссылки, поскольку я сказал, что это связано с безопасностью?

3. был похожий на мой вопрос, в котором вывод был сделан по соображениям безопасности, и это имеет смысл. особенно, когда дело доходит до ios.