Как сгенерировать и разместить файл BLOB-объектов на относительном пути? - PullRequest
0 голосов
/ 21 февраля 2020

При создании функции «Добавить на домашний экран» на относительном URL-адресе я динамически генерирую manifest.json и размещаю его, создав URL-адрес BLOB-объекта и добавив его к атрибуту href link[rel="manifest"]. * 1004. *

Там, где я застрял, мой сгенерированный URL-адрес манифеста указывает на что-то вроде: https://example.com/jbskdjcs9987r38943nsmd, вместо того, что я хочу, это: https://example.com/pwa/jbskdjcs9987r38943nsmd, что просто желание * BLOB-файл для размещения на относительном URL.

Ниже приведен пример создания файла BLOB-объекта:

let myManifest = {
  "name": "Example PWA",
  "short_name": "PWA",
  "description": "Example PWA",
  "start_url": ".",
  "display": "standalone",
  "theme_color": "#3f51b5",
  "background_color": "#3f51b5",
  "icons": [
    {
        "src": "images/android-chrome-192x192.png",
        "sizes": "192x192",
        "type": "image/png"
    },
    {
        "src": "images/android-chrome-512x512.png",
        "sizes": "512x512",
        "type": "image/png"
    }
  ]
}


const stringManifest = JSON.stringify(myManifest);
const blob = new Blob([stringManifest], {type: 'application/json'});
const manifestURL = URL.createObjectURL(blob);
console.log(manifestURL);
//document.getElementById('my-manifest-placeholder').setAttribute('href', manifestURL);

Я думал сделать что-то вроде:

const myURL = new URL('/pwa/','https://example.com');
const manifestURL = myURL.createObjectURL(blob);

Но это не работает, так как createObjectURL - это метод Stati c URL.

Любое предложение, которое позволило бы мне создать и разместить мой manifest.json файл динамически на относительном URL будет оценен.

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

1 Ответ

0 голосов
/ 02 марта 2020

Что касается относительного URL-адреса, я не мог найти способ динамического размещения файла BLOB-объекта на относительном URL-адресе, но работал с использованием подхода URL-адресов данных.

Ниже приведен пример подхода URL-адресов данных:

const stringManifest = JSON.stringify(myDynamicManifest);
const blob = new Blob([stringManifest], {type: 'application/json'});
// const manifestURL = URL.createObjectURL(blob);
let reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = function(){
  document.getElementById('my-manifest-placeholder').setAttribute('href', reader.result);
}
...