Chargement de fichiers locaux avec Javascript sans serveur Web
J'ai besoin d'écrire un logiciel qui utilise HTML5 et canvas.
L'ensemble du logiciel devrait être en mesure de l'exécuter localement, sans avoir besoin d'un serveur. Donc, je suis seulement en mesure de l'utilisation de Javascript, pas de php.
La partie la plus difficile: j'ai dynamiquement récupérer le contenu des fichiers textes qui sont nécessaires pendant le fonctionnement.
Par exemple: Lorsque le logiciel démarre, j'ai besoin de la "config.json".
Et une fois que l'utilisateur fait quelques pourrez ensuite mettre cela, j'ai besoin "story1.txt" ou "story2.txt" et ainsi de suite.
Mon Problème:
Je ne peux pas utiliser Ajax, parce que Chrome bloque - Fichiers locaux ne sont pas autorisés à récupérer d'autres fichiers de contenu. Je reçois toujours un Message d'erreur.
Ce que j'ai essayé jusqu'à présent:
- Charger les Fichiers avec l'Ajax & jQuery
Chrome ne m'autorise pas à charger le fichier
- De charger le Fichier dans un script Tag
Même si je déclare le JSON-Fichier js-Code, je ne peux pas accéder au contenu du Fichier chargé
- De charger le Fichier en Iframe invisible, et de lire son contenu
Des travaux de chargement, et je peux voir le code. Mais quand j'essaie d'accéder au contenu de l'IFrame, je reçois le Chrome, le Message d'Erreur encore:
"Uncaught SecurityError: Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols, domains, and ports must match."
Question:
Est-il un moyen de charger un fichier de Texte de façon dynamique, ou suis-je obligé d'utiliser un Serveur web?
source d'informationauteur maja
Vous devez vous connecter pour publier un commentaire.
Si vous insistez sur l'utilisation de google Chrome, il a quelques options de ligne de commande pour permettre l'accès à/de l'origine locale des fichiers (
--allow-file-access-from-files
/--disable-web-security
). Notez que vous devez exécuter le navigateur à partir de zéro avec les drapeaux - c'est à dire si il y a déjà toute autre Chrome windows ouvrez les drapeaux n'aura aucun effet, et cet effet persiste à travers TOUTES les fenêtres jusqu'à ce que google Chrome est fermée, ce qui est évidemment énorme trou dans la sécurité.Vous pouvez mettre en place un léger serveur local si vous emballez votre "application" avec une sorte de programme d'installation automatisée de script. Ce n'est pas encore très bon, parce que vous aurez besoin pour installer l'exécutable que l'utilisateur ne pourriez pas vouloir ou même être complètement incapable de l'installer en raison des restrictions.
Vous pouvez emballer votre code HTML/JS application basée comme extension Chrome - extensions ont beaucoup plus d'autorisations que code aléatoire, mais alors vous devrez soit de le distribuer par le biais de Google Play ou de fournir des instructions pour installer manuellement les extensions pour vos utilisateurs.
Et enfin, vous pouvez formater toutes les données, y compris votre configuration et les fichiers de texte de votre mentionné comme valide code JavaScript - c'est à dire un pack
story1.txt
àstory1.js
comme:et puis il suffit de sélectionner de façon dynamique des trucs que vous avez besoin de correspondant vars, ou même l'utilisation de manipulation du DOM pour seulement de charger les scripts dont vous avez besoin grâce à l'ajout dynamique de
<script>
balises. À mon avis, ce serait la meilleure option, car il est moins intrusif: il ne nécessite aucune installation/reconfiguration, il fonctionne out-of-box.Vous devez mettre vos fichiers locaux sur le même serveur. Si vous exécutez sur un serveur local, vous devez installer un serveur web comme Apache pour accéder à votre "à distance" de l'emplacement.
Chaque navigateur Moderne s'arrête à cela, parce que vous ne devez pas lire les fichiers locaux à partir de n'IMPORTE quel UTILISATEUR.
Même si vous exécutez à partir de localhost.
J'ai trouvé que firefox va exécuter le code html et js localement.
Si vous avez juste besoin d'un moyen rapide et facile "juridique" du serveur web de tromper votre navigateur en pensant qu'il n'est pas en tirant à partir du système de fichiers local, il suffit d'utiliser Python est simple HTPP serveur. Il sert tout simplement des fichiers sur demande à partir de n'importe quel répertoire où il a été appelé à partir de. Le serveur est autrement muet. Il ne sera pas exécuter des scripts PHP ou quoi que ce soit. Voici comment:
Sur un Mac ou Linux, vous devrez peut-être utiliser sudo:
Vous pouvez vraiment faire de la fantaisie et de l'exécution de plusieurs instances sur des ports différents, mais c'est au-delà de la portée de cette solution rapide.
Vous pouvez Charger le fichier Local dans le Navigateur google Chrome, localement, sans l'Aide de AJAX. vous pouvez utiliser normalement utiliser jQuery fonction comme $.getJSON() pour charger le fichier dans le navigateur chrome.
Mais si vous utilisez cette fonction jQuery alors chrome Web de Sécurité va Bloquer votre fonction pour accéder à un fichier de formulaire fichiers packages. Sur le navigateur Firefox, il fonctionne parfaitement, mais si votre exigence est le navigateur google chrome, alors vous devez avoir besoin de régler certaines de Chrome Drapeaux à l'aide de la Ligne de Commande.
Voici Quelques étapes pour vous de mettre de Chrome Drapeaux qui vous permet de vous quelques fonctionnalités supplémentaires qui vous aide à accéder au fichier de données à partir de votre système local.
ce sont:-
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files --disable-web-sécurité
Remarque: Souvenez-vous de vos Drapeaux maintenant réglé uniquement pour cette icône de google chrome. afin de démarrer votre application avec cette icône de google chrome.
En fonction de vos besoins à l'aide de fetch (https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) est une option:
Ce que vous décrivez (et la solution proposée) sérieusement compromet la sécurité du navigateur.
Alors, comment fonctionne le logiciel de monter sur la machine? Sauf si vous avez l'intention de l'envoi de Dvd par la poste, le déploiement du logiciel peut être aussi une appli HTML5 à l'aide de Basée sur le manifeste de la mise en cache (pris en charge dans tous les navigateurs modernes, y compris google Chrome, MSIE et Firefox). Ce que cela ne veut pas répondre pour l'enregistrement de données comme des fichiers normaux - mais vous pouvez garder les données dans le stockage local.
Je voudrais faire une extension Chrome si vos conditions le permettent. Ils sont faciles à faire et qui peut très bien fonctionner pour vous. http://developer.chrome.com/extensions/index.html