1
votes

Comment utiliser un seul fichier javascript properties.js pour définir des variables dans plusieurs fichiers HTML?



6 commentaires

L'importation du fichier js devrait fonctionner correctement pour n'importe quelle quantité de pages html. Le problème se produit-il lorsque vous cliquez sur un lien d'une page à l'autre, ou même si vous accédez directement à la deuxième page, les variables ne seront pas disponibles?


Lorsque j'utilise le même code dans FILE1.HTML que dans FILE2.HTML pour attribuer des valeurs aux variables, cela fonctionne pour le 1er fichier mais les valeurs restent vides dans le 2ème fichier. Une solution de rechange que j'utilise consiste à cloner le fichier properties.js sous un autre nom tel que properties2.js. Lorsque page2.html a un nom de fichier unique dans la ligne src, tout fonctionne. Ce n'est un problème que lorsque j'utilise le "même" nom de fichier dans la ligne src dans plus d'un fichier html.


Ce que je comprends, c'est que vous essayez de définir les variables dans properties.js à partir de FILE1.html et d'accéder à ces valeurs définies dans FILE2.html. Si c'est ce que vous essayez de faire, cela ne fonctionnera pas.


Non, ce n'est pas ce que je tente. Ce que je fais, c'est utiliser bash / jq / API pour créer un seul fichier JavaScript avec de nombreuses paires clé: valeur que plusieurs pages HTML5 utiliseront pour attribuer des valeurs aux variables. Les API bash / jq / s'exécutent toutes les minutes et mettent à jour les valeurs du fichier properties.js, qui à leur tour reflètent les valeurs mises à jour dans les pages HTML5 lors de l'actualisation de la page.


Hmm ... oui, cela n'a aucun sens pour moi pourquoi cela ne fonctionnerait pas. Vérifiez l'onglet Réseau dans devtools pour voir si la deuxième page reçoit le fichier.


Je pense que c'est un problème de cache du navigateur. En regardant l'onglet Réseau comme vous l'avez suggéré, je peux voir que Firefox et Chrome ne récupèrent pas le fichier properties.js mis à jour. Au lieu de cela, ils le récupèrent tous les deux du cache. Appuyez sur F5 pour actualiser les captures du cache. La première fois qu'il se charge dans une session de navigation privée, il le télécharge. Mais, ensuite, il récupère du cache lors de l'actualisation, manquant les mises à jour que le fichier properties.js reçoit chaque minute. J'ai besoin de comprendre comment forcer les navigateurs à télécharger le fichier properties.js au lieu d'obtenir du cache.


4 Réponses :


0
votes

Essayez de stocker les variables dans le stockage local auxquelles vous souhaitez accéder sur d'autres pages. Le stockage local permet d'enregistrer des paires clé / valeur dans un navigateur Web, donc lorsque la variable est mise à jour par une page, elle sera également disponible sur une autre page.


1 commentaires

Le stockage local a des dépendances sur le navigateur et permet aux données de persister. Les valeurs de properties.js sont mises à jour toutes les minutes à partir d'un travail cron wget'ing API data, parsing it with JQ, then pushing values ​​to the properties.js file using Bash .. Je préférerais de beaucoup garder le fichier properties.js comme source unique de vérité pour le contenu HTML et n'ajoute pas de couche de stockage locale.



0
votes

Vous n'utilisez normalement pas. dans le chemin du lien vers les fichiers de script, essayez

<script type="text/javascript" src="properties.js"></script>

et

<script type="text/javascript" src="sub_directory/properties.js"></script>

Cela n'a vraiment aucun sens que cela fonctionne pour un nom de fichier différent , mais pas le même.


0 commentaires

0
votes

Cela semble être un problème de cache du navigateur. Je dois trouver comment forcer Chrome et Firefox à télécharger le fichier properties.js fraîchement à chaque actualisation de la page au lieu de sortir du cache.


4 commentaires

Créez ensuite une application JavaScript qui interroge une API plutôt que d'inclure un fichier js pour les données.


Convenu. Interroger via xhr ou recevoir des mises à jour via des sockets Web est idéal.


Je suis également d'accord, cependant, c'est mon premier projet JavaScript lourd et les délais ne permettront pas une refonte (et l'apprentissage de nouvelles choses comme l'interrogation et l'analyse des API en JavaScript pur) à ce stade. Je vais examiner les meilleures façons que vous recommandez tous les deux pour la prochaine version. Merci beaucoup!


Ce fil de discussion a répondu au problème de cache mémoire du navigateur: stackoverflow.com/questions/118884/...



0
votes

Une chose que je tente de faire lorsque je veux empêcher mes scripts d'être mis en cache est d'ajouter un paramètre à la fin du chemin du fichier comme ceci: scripts.js? v = 0001 ou dans mon projets php, j'utilise npm pour ajouter un uuid à la fin du nom du fichier à chaque fois qu'il est mis à jour.

Pour en savoir plus, cliquez ici: Comment empêcher la mise en cache de Javascript < / a>

J'essaie juste de vous orienter dans la bonne direction! J'espère que cela vous aidera.


0 commentaires