WebView не видит изменений в коде HTML/JS

80
12 марта 2021, 11:50

WebView читает локальный index.html с внутренний памяти приложения. в этот index.html подключается рядом лежащий app.js обычным

<script src="app.js"></script>

в ходе работы приложения app.js изменяется. есть кнопка, которая просто перезагружает WebView.

проблема: на 1 устройстве (на остальных все ок), изменения в app.js не происходят. WebView словно кэширует весь код и в упор не видит изменений.

web.clearCache(true);

Если чистить кэш перед перезагрузкой страницы, то все работает отлично. вот только кэш в приложение должно наоборот кэшировать данные, поэтому этот вариант отпадает.

Как заставить WebView считать заново весь код, не очищая при этом кэш самой страницы (картинки)?

Answer 1

Попробуйте сделать это после изменения текста скрипта

[...document.scripts] 
  .filter(s => ~s.src.indexOf('app.js')) 
  .pop().src = 'app.js?' + Date.now()
<script src="app.js"></script>

Answer 2

заменил <script src="app.js"></script> на

<script>
  var url = 'app.js';
  var oldScript = document.getElementById(url);
  if (oldScript)
    oldScript.remove();
  var scr = document.createElement('script');
  scr.id = url;
  scr.src = url + '?t=' + Math.random();
  document.getElementsByTagName('head')[0].appendChild(scr);
  scr.onload = callback;
</script>
READ ALSO
Почему тега изображения нет в скачанном HTML и как его спарсить?

Почему тега изображения нет в скачанном HTML и как его спарсить?

ПримерВот тут, в самом нижнем посте картинка с котиком, под спойлером:

113
Получить значение из ComboBox

Получить значение из ComboBox

Есть коллекция Dictionary(string,int) которая привязана к ComboBoxПри выборе 1 из пунктов в ComboBox мне необходимо положить значения взятые из него в разные...

118
Ошибка The operation cannot be completed because the DbContext has been disposed

Ошибка The operation cannot be completed because the DbContext has been disposed

Я решил добавить Ninject в проект из Identity(Проект Web API)Без него все работало нормально

134