Epub.js – Phonegap ne fonctionne pas à cause de l'URI blob

J'utilise la bibliothèque Epub.js pour générer un fichier .epub dans un projet Phonegap.

Le fichier est récupéré et décompressé correctement, mais l'écran est affiché vide s'il s'exécute dans WebView (fonctionne parfaitement dans le bureau et dans le navigateur Android (application Chrome)).

Débogage, je vois que l' iframe où l'epub doit être chargé ne fonctionne pas, car iframe.onload n'est jamais appelé. L'URL qu'il essaie d'accéder est blob:file%3A///85a6ce73-2b5f-430e-a908-26a7d3d830e4 , donc je suppose que cela pourrait être la raison … Cordova n'accepte pas les programmes URI blob .

Cependant, je ne connais aucune solution de contournement … Je suis complètement coincé là-bas.

J'ai eu la solution. La réponse à tous "Cordova n'accepte pas URI" est toujours "Liste blanche"

Avec le plugin de liste blanche que j'avais dans mon fichier de configuration:

 <access origin="*" /> 

Cependant, le débogage, j'ai vu que le blob:/file://... uri était bloqué dans shouldAllowNavigation. Ensuite, j'ai essayé avec:

 <access origin="*" /> <allow-navigation origin="*" /> 

Mais! Il ne fonctionnait toujours pas. Déboguer un peu plus, j'ai vu que le WhitelistPlugin si vous ajoutez un * il ne permet pas tout, mais seulement http:// , https:// et les data: Enfin, ajoutant:

 <access origin="*" /> <allow-navigation href="*" /> <allow-navigation href="blob:*" /> 

J'ai corrigé le problème pour moi.

De plus, au cas où cela serait utile pour quelqu'un, pendant que je testais, j'ai essayé de télécharger le fichier .epub d'un serveur et de l'extraire dans le système de fichiers (/ data / data / package / …) et de l'accéder à partir de là. Pour une raison quelconque, l'accès aux fichiers locaux avec XHR Requests renvoie l' status: 0 , comme il a échoué, mais la réponse est là. J'ai dû modifier la méthode EPUBJS.core.request pour accepter les réponses si cette réponse est définie (au lieu de s'attendre à this.status que this.status soit 200 ).