WebView подключен к index.html (скопирован из asset в память телефона). В index.html подключен JS-файл. В нем есть часть кода, которая работает через setInterval
. В нем лежит функция, которая возвращает переменную из другого js-файла.
Логика работы: выполняем каждые N секунд "внутренности" setInterval
. Там натыкаемся на функцию. Она подключает другой скрипт в код. И мы возвращаем нужную переменную в кусок с setInterval
.
JS-файл с переменной меняется в другой программе, но его структура остается такой же. Изменяется только значение этой переменной.
На компе все работает идеально. А вот в WebView на Android не получается.
Вместо функции "подключить другой файл и считать переменную" делал просто рандомное математическое число. И на компе и в WebView все работает. Поэтому пришел к выводу, что проблема не в setInterval
. Похоже проблема именно с подключением "внешнего" js-файла. Кажется, он просто не обновляет эту переменную. Или просто отказывается подключать этот скрипт, раз он уже подключен.
Мучался с web.loadUrl("javascript: test()");
- тоже самое. Не обновляет переменную (ну эт я думаю, что не обновляет).
coord.js:
xx =54;
Основной JS:
setInterval(function() {
marker.forEach(function(n) {
n.setLatLng(new L.LatLng(
xyz(),
24
))
})
}, 0);
function xyz(){
include("coord.js");
return xx;
}
function include(url) {
var script = document.createElement('script');
script.src = url;
document.getElementsByTagName('head')[0].appendChild(script);
}
У вас здесь куча ошибок:
Вы при каждом вызове setInterval
создаете новый тег script
, у вас их там миллионы накапливаются.
Время между вызовами setInterval
стоит 0 миллисекунд.
Есть вероятность, что тег script
не обновляется из-за кеша.
Загрузка тега script
происходит асинхронно.
Также, возможно, у вас не правильно написан цикл. Как-то странно всем маркерам на карте ставить одну и ту же координату.
Попробуйте вот так:
setInterval(function () {
marker.forEach(function (n) {
xyz(function () {
n.setLatLng(new L.LatLng(xx, 24));
});
});
}, 1000);
function xyz (callback) {
include('test.js', callback);
}
function include (url, callback) {
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;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
суть вопроса таков при создание спрайтов svg у меня сыпятся вот такое предупреждение "svg-sprite-loader exceptionSome loaders will be applied after svg-sprite-loader in extract mode" ? подскажите...
Пытаюсь парсить сайт, страница находится в кодировке cp1251, при выводе у меня появляются ромбики с вопросильтельными знаками внутри, пробовал...
Можно как-то узнать общее время аудио-файла и текущее время если файл воспроизводиться
Как сделать, что бы обещание срабатывало при выполнении всего содержимого first(); Если добавить в массив сразу AJAX запрос, то всё работает как...