Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / HTML, JavaScript, VBScript, CSS Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
 Re: Посоветуйте как передать данные в обновляемую страницу HTML  [new]
Andi_WEB
Member

Откуда:
Сообщений: 70
> Можно попробовать так
Попробовал, работает один раз, если я прямо редактирую данные "0,45597925479523" в отладчике. До первого обновления данных с сервера.
28 окт 21, 15:57    [22389453]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте как передать данные в обновляемую страницу HTML  [new]
Andi_WEB
Member

Откуда:
Сообщений: 70
> откуда послал?

Из простого TCP клиента как GET-запрос серверу. Ну API у него такой, что он запоминает эту строку, а потом может вставить в конец страницы.
28 окт 21, 15:59    [22389455]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте как передать данные в обновляемую страницу HTML  [new]
Andi_WEB
Member

Откуда:
Сообщений: 70
Приветствую!
А есть какое-то логическое объяснение, почему этот код именно так работает и после многократных обновлений данных на по AJAX странице.

Но как работает - только если НАПРЯМУЮ редактировать в отладчике браузера на вкладки "Элементы" значения в элементе id='tcp_cb'.
Если данные приходят с сервера, то в отладчике я вижу, что ВИЗУАЛЬНО они меняются именно также, но событие не возникает. Однако, благодаря работающему таймеру, если опять менять значения в отладчике, то как бы все работает.

var timerId;
var Values_div;
var observer;
var Dataset_Values;
var Old_Values;

function Check_Values (mutations) { 
  Dataset_Values= mutations[0].target;
  if (Old_Values!=Dataset_Values.dataset.columns)
      { 
       Old_Values=Dataset_Values.dataset.columns;
       alert(Dataset_Values.dataset.columns); // Выводим обновленное значение первой переменной
      }
        }

function Init_Observer() // Инициализация "наблюдателя" за изменениями
{
 Values_div = document.getElementById('tcp_cb');
 observer = new MutationObserver(Check_Values);
 observer.observe(Values_div, {attributes: true});   
}



function Create_Timer() 
{
 timerId=window.setInterval(Proxy_Function, 500); // Вызываем вспомогательную функцию
}


function Proxy_Function() 
{
 Init_Observer();
}


document.addEventListener("DOMContentLoaded", Create_Timer);
29 окт 21, 16:45    [22390007]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте как передать данные в обновляемую страницу HTML  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 19509
Andi_WEB
Если данные приходят с сервера,
что приходит с сервера?
29 окт 21, 17:48    [22390066]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте как передать данные в обновляемую страницу HTML  [new]
Andi_WEB
Member

Откуда:
Сообщений: 70
Кажется начинает прояснятся. При ручном изменении в отладчике менятся 'attributes' и target - div tcp_cb.

А вот по приходу данных от сервера, которые на глаз в отладчике приводят к тем же рузультатам, меняется-то другое, а именно 'childList' ! Да еще и таргет другой. Ну будем думать дальше...
29 окт 21, 20:03    [22390148]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте как передать данные в обновляемую страницу HTML  [new]
Andi_WEB
Member

Откуда:
Сообщений: 70
В общем, все заработало. MutationObserver - сила!

И, кстати, работает и при такой концовке:

function Proxy_Function() 
{
 Init_Observer();
  window.clearInterval(timerId); // Останавливаем таймер
}


document.addEventListener("DOMContentLoaded", Create_Timer);


Теперь никакого периодического тайминга.

К сообщению приложен файл. Размер - 25Kb


Сообщение было отредактировано: 29 окт 21, 21:10
29 окт 21, 21:07    [22390165]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
Все форумы / HTML, JavaScript, VBScript, CSS Ответить