Страница 1 из 2
Помогите со скриптом.
Добавлено: Пн апр 18, 2022 3:28 pm
adzam
Прошу помощи у студии.
Нужно создать скрипт который сможет обновить конкретный DIV на конкретной странице.
например я хочу, чтоб при изменеии температуры на улице ow_fact.temperature запускался какой либо скрипт или метод и обновлял <div id="pogoda" > на страние default.html .
Как все сделать понятно, кроме тела самого скрипта.
<div id="pogoda" > обновляю постоянно с помощью скрипта :
<script type='text/javascript'>
setInterval(function(){
$("#pogoda").load("index.php #pogoda");
}, 60000);
</script>
Если нужно обновлять много дивов то страница явно напрягается, поэтому хочу запустить чтоб див обновлялся только при измнении переменной ow_fact.temperature
Помогите пожадуйста кто в этом разбирается и сможет помочь написать такой скрипт.
В нэте искал но не нашел ничего.
Заранее спасибо за любой ответ.
Re: Помогите со скриптом.
Добавлено: Пн апр 18, 2022 8:40 pm
adzam
Очень жаль что никто не знает, или не хочет ...
Re: Помогите со скриптом.
Добавлено: Пн апр 18, 2022 9:17 pm
Jilber
Re: Помогите со скриптом.
Добавлено: Пн апр 18, 2022 9:39 pm
adzam
Так я метод запустить могу а что в методе написать?
Вот в чем проблема....
Re: Помогите со скриптом.
Добавлено: Пн апр 18, 2022 10:14 pm
fandaymon
adzam писал(а): Пн апр 18, 2022 3:28 pm
Прошу помощи у студии.
Нужно создать скрипт который сможет обновить конкретный
DIV на конкретной странице.
например я хочу, чтоб при изменеии температуры на улице
ow_fact.temperature запускался какой либо скрипт или метод и обновлял
<div id="pogoda" > на страние
default.html .
Как все сделать понятно, кроме тела самого скрипта.
<div id="pogoda" > обновляю постоянно с помощью скрипта :
<script type='text/javascript'>
setInterval(function(){
$("#pogoda").load("index.php #pogoda");
}, 60000);
</script>
Если нужно обновлять много дивов то страница явно напрягается, поэтому хочу запустить чтоб див обновлялся только при измнении переменной
ow_fact.temperature
Помогите пожадуйста кто в этом разбирается и сможет помочь написать такой скрипт.
В нэте искал но не нашел ничего.
Заранее спасибо за любой ответ.
В принципе тут возможны 2 варианта
1. По таймеру запускать джаваскипт, который будет запрашивать через ajax нужное свойство и при его изменении менять то, что выводиться в диве
2. Использовать веб-сокеты - на страничке подписаться на обновления
Код: Выделить всё
<script type="text/javascript">
var httpRefreshTimer = 0;
var subscribedWebSockets=0;
var subscribedWebSocketsTimer;
var requestSent = Math.round(+new Date()/1000);
function subscribeToStatus() {
console.log('Sending devices subscription request...');
var payload;
payload = new Object();
payload.action = 'Subscribe';
payload.data = new Object();
payload.data.TYPE='events';
payload.data.EVENTS='TUSTATUS';
wsSocket.send(JSON.stringify(payload));
subscribedWebSocketsTimer=setTimeout('subscribeToStatus();', 3000);
return false;
}
$.subscribe('wsConnected', function (_) {
clearTimeout(httpRefreshTimer);
subscribeToStatus();
});
$.subscribe('wsData', function (_, response) {
if (response.action=='subscribed') {
console.log('Subscription to devices confirmed.');
clearTimeout(subscribedWebSocketsTimer);
subscribedWebSockets=1;
}
if (response.action=='events') {
var obj=jQuery.parseJSON(response.data);
var objCnt = obj.EVENT_DATA.VALUE.length;
if (obj.EVENT_DATA.VALUE.FIELD=='STATE') {
if (obj.EVENT_DATA.VALUE.VALUE==0) {
document.getElementById('tustate'+obj.EVENT_DATA.VALUE.ID).src='../templates/tuya/img/off-button.png';
} else {
document.getElementById('tustate'+obj.EVENT_DATA.VALUE.ID).src='../templates/tuya/img/on-button.png';
}
} else if (obj.EVENT_DATA.VALUE.FIELD=='ONLINE') {
var online_control=document.getElementById('tuonline'+obj.EVENT_DATA.VALUE.ID)
if (obj.EVENT_DATA.VALUE.VALUE==1) {
online_control.className="label label-success";
online_control.title="Online";
online_control.innerHTML="Online";
} else {
online_control.className="label label-warning";
online_control.title="Offline";
online_control.innerHTML="Offline";
}
}
}
});
</script>
, а при изменении свойства вызывать
Код: Выделить всё
processSubscriptions('TUSTATUS', array('FIELD' => 'ONLINE','VALUE' => $value,'ID' =>$device_id));
Вот такой коде в модуле туи меняет рисунок при изменении свойства ONLINE
TUSTATUS - это название подписки, его надо поменять на своё
Re: Помогите со скриптом.
Добавлено: Пн апр 18, 2022 10:56 pm
adzam
Мне кажется это не то , этот скрипт проверяет и меняет картинку одну на другую а мне нужно чтоб див перезагрузился и показывал уже новое измененное значение.
Но все равно спасибо за ответ.
Мне кажется что сдесь нужен скрипт типа этого
<script type='text/javascript'>
setInterval(function(){
$("#pogoda").load("index.php #pogoda");
}, 60000);
</script>
но чтоб он не запускался сам через промежуток времени, а чтоб этот скрипт можно было бы запустить из метода,который запускается при изменении значения. Т. е. нужен скрипт который можно запустить дистанционно другой командой.
Я со скриптами слабо знаком поэтому не могу ничего придумать.
Re: Помогите со скриптом.
Добавлено: Пн апр 18, 2022 11:03 pm
fandaymon
adzam писал(а): Пн апр 18, 2022 10:56 pm
Мне кажется это не то , этот скрипт проверяет и меняет картинку одну на другую а мне нужно чтоб див перезагрузился и показывал уже новое измененное значение.
Но все равно спасибо за ответ.
Что именно будет делать js-скрипт при изменении - это будет зашито в самом скрипте, в данном случае там зашито изменение картинки, никто не мешает менять что-то в диве, примерно таким же образом - выбираем селектором нужный див и меняем в нём то что нужно - класс, innerhtml, цвета и т.д.
Re: Помогите со скриптом.
Добавлено: Пн апр 18, 2022 11:06 pm
adzam
Да может быть,но к сожалению моих знаний не хватит чтоб переделать этот скрипт.
Поэтому и прошу помощи.
Re: Помогите со скриптом.
Добавлено: Вт апр 19, 2022 7:14 am
Logrus
%объект.свойство% при изменении самого свойства обновляется по веб сокетам и перегзагружает див в котором находится
хз что там тс хочет
Re: Помогите со скриптом.
Добавлено: Вт апр 19, 2022 7:28 am
Logrus
adzam писал(а): Пн апр 18, 2022 11:06 pm
Да может быть,но к сожалению моих знаний не хватит чтоб переделать этот скрипт.
Поэтому и прошу помощи.
https://mjdm.ru/forum/viewtopic.php?f=7&t=3379
читать, понимать, дефаулт.хтмл подписан на веб сокеты вроде б это проверить, но помню сцены в шабку засовывали