Автор Тема: Обновление графиков  (Прочитано 7708 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Anthony

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 77
  • +0/-0
  • 0
    • Просмотр профиля
Обновление графиков
« : 15 Декабря 2005, 16:23:09 »
Добрый день!

Столкнулся я с проблемой. Разработываю сайт в одном из разделом которого будут выводиться графики - биржевая информация. Сами картинки формаруются php модулем jpgraph, данные берутся из БД и все работает.

Проблемы начались, когда начал писать скрипт для обновления картинок, чтобы все страницу не перезагружать. При попытке присвоить нужному объекту img новый урл графики исчезают со страницы. Это в ИЕ, в firefox-е все работает и графики нормально обновляются.

Еще такая штука. Когда в ИЕ картинки исчезают на их месте появляется пустай картинка размером 20х20 px и если на ней вызвать попап-меню и сказать "показать картинку", тогда она подгружается.

Может кто-нибудь знает как можно обойти этот баг?

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Обновление графиков
« Ответ #1 : 15 Декабря 2005, 18:54:00 »
Anthony
Цитировать
Anthony:
присвоить нужному объекту img новый урл

Вот отсюда поподробнее, пожалуйста.

В IE замечательно работает конструкция img.src=\'url\';
LJ: Backslashed life (rss)

Оффлайн Anthony

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 77
  • +0/-0
  • 0
    • Просмотр профиля
Обновление графиков
« Ответ #2 : 15 Декабря 2005, 19:01:01 »
Эта конструкция работает, только картинка не успечает подгрузиться, насколько я понимаю. А предварительно ее загружать нельзя, т. к. информация, отображаемая на графиках, динамическая и меняется постоянно.

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Обновление графиков
« Ответ #3 : 15 Декабря 2005, 19:10:11 »
Anthony
Делать через объект Image (в поиск по прелоадингу картинок)
LJ: Backslashed life (rss)

Оффлайн Anthony

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 77
  • +0/-0
  • 0
    • Просмотр профиля
Обновление графиков
« Ответ #4 : 15 Декабря 2005, 22:45:46 »
Тоже не помогает, пробовал.

Этот код дает тот же результат, что и простое присваивание урл:
image1 = new Image();
image1.src = \'url\';
document.image2.src = image1.src;

А загружить картинку совсем заранее нельзя, т. к. уже писал - информация меняется постоянно, а графики должны отображать посление данные. Ну например, помимо прочего на графике показывается текущее время с точностью до секунды.

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Обновление графиков
« Ответ #5 : 16 Декабря 2005, 23:32:11 »
Anthony
А если что-то вроде
image1 = new Image();
image1.onLoad= function() {document.image2.src = image1.src;};
image1.src = \'url\';

???
LJ: Backslashed life (rss)

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Обновление графиков
« Ответ #6 : 16 Декабря 2005, 23:33:29 »
Anthony
А вообще, чем качать ежесекундно немаленькую картинку, лучше лить данные путем исп. ajax и отрисовывать соббсно js-ом.
Имхо.
LJ: Backslashed life (rss)

Оффлайн Anthony

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 77
  • +0/-0
  • 0
    • Просмотр профиля
Обновление графиков
« Ответ #7 : 19 Декабря 2005, 11:57:41 »
Цитировать
image1 = new Image();
image1.onLoad= function() {document.image2.src = image1.src;};
image1.src = \'url\';

Идея хорошая, но почему-то не работает. Вообще ничего не происходит и ошибок никаких не выдает.

Цитировать
А вообще, чем качать ежесекундно немаленькую картинку, лучше лить данные путем исп. ajax и отрисовывать соббсно js-ом.

Да собственно нет такой необходимости каждую секунду обновлять график. Все проще, нужно чтобы на графике отобразилась текущая информация. Т. е. если странице загружена 10 мин. назад, то при обновлении картинки на ней должна отображаться инфа с текущим временем, а не 10-и минутной давности.

По поводу отрисовки js-ом идея хорошая за исключением одного, в данный момент графики рисует спец. библиотека на основе данных. А на то, чтобы самим переписать эту библиотеку уйдет туева куча времени. Делаться это правда все-равно будет, только значительно позже...

Оффлайн Anthony

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 77
  • +0/-0
  • 0
    • Просмотр профиля
Обновление графиков
« Ответ #8 : 19 Декабря 2005, 12:07:17 »
img1.onLoad = function() { alert(\'test\'); };

Даже алерта нет...

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Обновление графиков
« Ответ #9 : 19 Декабря 2005, 13:38:08 »
Anthony
Цитировать
Anthony:
Т. е. если странице загружена 10 мин. назад, то при обновлении картинки на ней должна отображаться инфа с текущим временем, а не 10-и минутной давности.

Стоп, а вот отсюда снова по-подробнее.
А что, оно по умолчанию не так?
Т.е., тебе нужно, чтобы по refresh-у страницы страница бралась с сервера (как и должна), а она у тебя из кэша?...

Цитировать
Anthony:
Даже алерта нет.

Да, протестил. Действительно работать не хочет, даже с созданием отдельных функции и передачей имени (хотя в соотв. с документацией должен). Спишем на глюки браузеров :(
LJ: Backslashed life (rss)

Оффлайн virka

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 68
  • +0/-0
  • 0
    • Просмотр профиля
    • http://

Оффлайн Anthony

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 77
  • +0/-0
  • 0
    • Просмотр профиля
Обновление графиков
« Ответ #11 : 19 Декабря 2005, 15:44:50 »
Похоже на то, т. к. картинки обновлялись по ссылке со значением href="javascript:void(0)". А как с этим можно бороться?

Оффлайн virka

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 68
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Обновление графиков
« Ответ #12 : 19 Декабря 2005, 16:18:01 »
href="#"

Оффлайн Anthony

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 77
  • +0/-0
  • 0
    • Просмотр профиля
Обновление графиков
« Ответ #13 : 19 Декабря 2005, 16:21:50 »
А в этом случае разве перезагрузки страницы не происходит?

Ссылка-то ничего не делает, это понятно, а вот страница перезагружается с сервера. А этого как раз и не нужно делать.

Оффлайн virka

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 68
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Обновление графиков
« Ответ #14 : 19 Декабря 2005, 16:26:16 »
А для чего они вообще у тебя стоят в ?

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28