Как использовать один файл javascript properties.js для установки переменных в нескольких файлах HTML? - PullRequest
1 голос
/ 21 июня 2019

Обновление: это оказалось проблемой кеша памяти, когда Firefox и Chrome вытягивали файл properties.js из кеша памяти при каждом обновлении страницы, а не загружали свежую версию изсервер.Подсказка на вкладке Сеть из комментариев ниже позволила мне увидеть это поведение.Спасибо за это!

Использование метатегов в файлах HTML, как показано ниже, совсем не помогло:

    <meta http-equiv=“Pragma” content=”no-cache”>
    <meta http-equiv=“Expires” content=”-1″>
    <meta http-equiv=“CACHE-CONTROL” content=”NO-CACHE”>

Я занимаюсь разработкой панели интерфейса пользователя с несколькими страницами HTML5, которые показывают значениякоторые меняются каждые несколько минут.Значения получены из API, которые я анализирую с помощью JQ, а затем использую bash для обновления файла properties.js.Несколько страниц HTML5 используют этот файл properties.js для присвоения значений переменным JavaScript на страницах HTML5.

Проблема в том, что это работает для 1-й страницы HTML5, но 2-я страница HTML5 не получает значения.Если я закомментирую строку «src» 1-й страницы, 2-я страница получит значения.Кажется, то, как я это делаю, полезно только для заполнения значений на одной странице HTML5.Я бы не стал клонировать файл свойств для каждой HTML-страницы.Я пытаюсь найти способ заставить все страницы HTML5 заполнять значения из одного файла properties.js.

[FILE1.HTML]


<head>
...
<script type="text/javascript" src="./properties.js"></script>
...
</head>
<body>
...
<main>
...
<div class="text-value" id="ts1_info.var1"></div>
...
<script type="text/javascript">
   document.getElementById("ts1_info.var1").innerHTML = ts1_info.var1;
</script>
...
</main>
</body>

[FILE2.HTML]

<head>
...
<script type="text/javascript" src="./properties.js"></script>
...
</head>
<body>
...
<main>
...
<div class="text-value" id="ts1_info.var1"></div>
...
<script type="text/javascript">
   document.getElementById("ts1_info.var1").innerHTML = ts1_info.var1;
</script>
...
</main>
</body>

[PROPERTIES.JS]

var ts1_info;
ts1_info = {
    var1: "my_value",
    ...
;

[Иерархия файлов]


page1.html
      |
      |_ page2.html
      |_ properties.js

В page1.html строка src опускается на 1 уровень как таковой:

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

В page2.html строка src переходит на тот же уровень:


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

Ответы [ 4 ]

0 голосов
/ 21 июня 2019

Когда я хочу предотвратить кэширование моих сценариев, я должен добавить параметр в конец пути к файлу, например: scripts.js?v=0001 или в своих проектах php я использую npm, чтобы добавить uuid в конец имени файла при каждом его обновлении.

Вы можете оформить заказ здесь: Как предотвратить кэширование Javascript

Просто пытаюсь указать вам правильное направление! Надеюсь, это поможет.

0 голосов
/ 21 июня 2019

Вы обычно не используете. в пути ссылки на файлы скриптов попробуйте

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

и

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

Это действительно не имеет смысла, что это работает для другого имени файла, но не того же самого.

0 голосов
/ 21 июня 2019

Это похоже на проблему с кешем браузера.Мне нужно выяснить, как заставить Chrome и Firefox загружать файл properties.js заново при каждом обновлении страницы, а не из кеша.

0 голосов
/ 21 июня 2019

Попробуйте сохранить переменные в локальном хранилище , к которому вы хотите обращаться через другие страницы.Локальное хранилище позволяет сохранять пары ключ / значение в веб-браузере, поэтому, когда переменная обновляется на одной странице, она также будет доступна для другой страницы.

...