Forum Webscript.Ru
Программирование => JavaScript & JScript => Тема начата: Anthony от 15 Декабря 2005, 16:23:09
-
Добрый день!
Столкнулся я с проблемой. Разработываю сайт в одном из разделом которого будут выводиться графики - биржевая информация. Сами картинки формаруются php модулем jpgraph, данные берутся из БД и все работает.
Проблемы начались, когда начал писать скрипт для обновления картинок, чтобы все страницу не перезагружать. При попытке присвоить нужному объекту img новый урл графики исчезают со страницы. Это в ИЕ, в firefox-е все работает и графики нормально обновляются.
Еще такая штука. Когда в ИЕ картинки исчезают на их месте появляется пустай картинка размером 20х20 px и если на ней вызвать попап-меню и сказать "показать картинку", тогда она подгружается.
Может кто-нибудь знает как можно обойти этот баг?
-
Anthony
Anthony:
присвоить нужному объекту img новый урл
Вот отсюда поподробнее, пожалуйста.
В IE замечательно работает конструкция img.src=\'url\';
-
Эта конструкция работает, только картинка не успечает подгрузиться, насколько я понимаю. А предварительно ее загружать нельзя, т. к. информация, отображаемая на графиках, динамическая и меняется постоянно.
-
Anthony
Делать через объект Image (в поиск по прелоадингу картинок)
-
Тоже не помогает, пробовал.
Этот код дает тот же результат, что и простое присваивание урл:
image1 = new Image();
image1.src = \'url\';
document.image2.src = image1.src;
А загружить картинку совсем заранее нельзя, т. к. уже писал - информация меняется постоянно, а графики должны отображать посление данные. Ну например, помимо прочего на графике показывается текущее время с точностью до секунды.
-
Anthony
А если что-то вроде
image1 = new Image();
image1.onLoad= function() {document.image2.src = image1.src;};
image1.src = \'url\';
???
-
Anthony
А вообще, чем качать ежесекундно немаленькую картинку, лучше лить данные путем исп. ajax и отрисовывать соббсно js-ом.
Имхо.
-
image1 = new Image();
image1.onLoad= function() {document.image2.src = image1.src;};
image1.src = \'url\';
Идея хорошая, но почему-то не работает. Вообще ничего не происходит и ошибок никаких не выдает.
А вообще, чем качать ежесекундно немаленькую картинку, лучше лить данные путем исп. ajax и отрисовывать соббсно js-ом.
Да собственно нет такой необходимости каждую секунду обновлять график. Все проще, нужно чтобы на графике отобразилась текущая информация. Т. е. если странице загружена 10 мин. назад, то при обновлении картинки на ней должна отображаться инфа с текущим временем, а не 10-и минутной давности.
По поводу отрисовки js-ом идея хорошая за исключением одного, в данный момент графики рисует спец. библиотека на основе данных. А на то, чтобы самим переписать эту библиотеку уйдет туева куча времени. Делаться это правда все-равно будет, только значительно позже...
-
img1.onLoad = function() { alert(\'test\'); };
Даже алерта нет...
-
Anthony
Anthony:
Т. е. если странице загружена 10 мин. назад, то при обновлении картинки на ней должна отображаться инфа с текущим временем, а не 10-и минутной давности.
Стоп, а вот отсюда снова по-подробнее.
А что, оно по умолчанию не так?
Т.е., тебе нужно, чтобы по refresh-у страницы страница бралась с сервера (как и должна), а она у тебя из кэша?...
Anthony:
Даже алерта нет.
Да, протестил. Действительно работать не хочет, даже с созданием отдельных функции и передачей имени (хотя в соотв. с документацией должен). Спишем на глюки браузеров :(
-
Нечто подобное бывает в IE, когда стоит в , и аттрибуту href присвоенно какое-нибудь блокирующее действие (типа void(0)). Браузер картинки загружает, но не показывает.
-
Похоже на то, т. к. картинки обновлялись по ссылке со значением href="javascript:void(0)". А как с этим можно бороться?
-
href="#"
-
А в этом случае разве перезагрузки страницы не происходит?
Ссылка-то ничего не делает, это понятно, а вот страница перезагружается с сервера. А этого как раз и не нужно делать.
-
А для чего они вообще у тебя стоят в ?
-
Anthony
do something; return false;">