javascript в элементах сцены

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

javascript в элементах сцены

Сообщение sergejey » Чт ноя 22, 2012 6:19 pm

В недавнем обновлении исходников появилось парочка изменений, ксающихся сцен и элементов сцены.

1. Появилась возможность для HTML-элементов указать, что б не выводился тёмный фон
2. Появилась возможность использовать Javascript.

http://clip2net.com/clip/m1/1353596926-clip-7kb.png

О последнем немного подробнее... Если в поле Javascript введён какой-то код, то он будет вставлен в сцену сразу после самого элемента. Этот код не обновляется динамически, в отличие от HTML-кода состояния элемента, но позволяет делать дополнительный интерактив для элемента.

Например, мы хотим вывести на сцену график и при этом его обновлять периодически (естественно без перезагрузки страницы). Один из путей это использовать в HTML-коде состояния изменяющийся параметр, например такой код

Код: Выделить всё

<img src="/pChart/?p=ThisComputer.tempOutside&type=48h&width=280&gtype=curve&time=%ThisComputer.timeNow%">
Минус у такого решения только один -- меняется источник картинки и она "моргает", т.е. пропадает, пока не загрузится новый график.

Второй вариант -- это использовать javascript для обновления картинки.
Код HTML будет похожий (убираем свойство объекта и добавляем уникальный id):

Код: Выделить всё

<img src="/pChart/?p=ThisComputer.tempOutside&type=48h&width=280&gtype=curve" id='image1'>
и вот какой код добавляем в новое поле javascript

Код: Выделить всё

var image1Timer;
var newImage1 = new Image();
newImage1.src='/pChart/?p=ThisComputer.tempOutside&type=48h&width=280&gtype=curve';

function updateImage1()
{
if(newImage1.complete) {
    document.getElementById("image1").src = newImage1.src;
    newImage1 = new Image();
    newImage1.src = "/pChart/?p=ThisComputer.tempOutside&type=48h&width=280&gtype=curve&time=" + new Date().getTime();
}
   clearTimeout(image1Timer);
    image1Timer=setTimeout('updateImage1();', 30000);
}
updateImage1();
получилось довольно громоздко, но за то картинка обновляется раз в 30 секунд (значение 30 000 в коде) без моргания.

скриншот, если не понятно что куда вводить:
Изображение

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ответить