|
|
|
| помогите в IE and FF все гуд а вот опера не понимает когда я ставлю onload на Img | |
|
|
|
|
|
|
|
для: sidPR
(14.04.2007 в 02:07)
| |
<div class='load_img' id='load_22'>Загрузка модели...</div>
<img style="display:none" id='img_22' src="11042007_1442540.jpg" onload="alert('test');img_load('22');">
<script>
ob_load = document.getElementById('load_'+id);
ob_load.style.display='none';
ob_con = document.getElementById('img_'+id);
ob_con.style.display='block';
</script>
|
| |
|
|
|
|
|
|
|
для: sidPR
(14.04.2007 в 02:09)
| | В одной книжке прочитал следующее:
У объекта Image также есть обработчик событий onLoad. Это событие вызывается, когда браузер выводит на дисплей изображение. Обратите внимание, что данное событие происходит не в процессе загрузки изображения клиенту, а в течение вывода на дисплей этого изображения.
Соответственно, если поставить <img style="display:block"> - то все работает и в Опере. Если верить книге, то проблема получается вовсе не в Опере, а наоборот, в IE и FF. | |
|
|
|
|
|
|
|
для: yuk
(14.04.2007 в 10:32)
| | Так как быть ? я чет не понял | |
|
|
|
|
|
|
|
для: sidPR
(14.04.2007 в 12:27)
| | А какой результат ожидается? А то в вашем скрипте как-будто чего-то недостает, или что-то лишнее. | |
|
|
|
|
|
|
|
для: yuk
(14.04.2007 в 12:33)
| |
<style>
.load_img{
background-color: #DDE4E5;
BORDER: #000000 1px dotted;
PADDING:10px;
color:#9CA8B0;
width:80%;
FONT-WEIGHT: bold;
FONT-SIZE: 12px;
FONT-FAMILY: Arial, Helvetica, sans-serif;
}
</style>
<table width='251' border='1' cellspacing='0' cellpadding='0' style='border-collapse: collapse;'>
<tr>
<td align="center" height="376" valign="middle">
<div class='load_img' id='load_22'>Загрузка модели...</div>
<img style="display:none" id='img_22' src="11042007_1442540.jpg" onload="alert('test');img_load('22');">
</td>
</tr>
</table>
<script>
function img_load(id){
alert("ok");
ob_load = document.getElementById('load_'+id);
ob_load.style.display='none';
ob_con = document.getElementById('img_'+id);
ob_con.style.display='block';
alert("ok");
}
</script>
|
| |
|
|
|
|
|
|
|
для: sidPR
(14.04.2007 в 12:35)
| | Прикол в том, что в Опере событие onload для <img> происходит тогда, когда картинка выводится на экран, а не при загрузке в память. Для создания такого эффекта можно воспользоваться прозрачностью (opacity). Изображение будет выводиться на экран, только будет полностью прозрачным. Только свойство это работает вроде только в IE=>7, Opera=>9 и т.д. Вобщем, в последних версиях браузеров.
Если делать с прозрачностью, то можно так:
<img style="opacity:0.0" id='img_22' src="11042007_1442540.jpg" onload="alert('test');img_load('22');">
<script>
function img_load(id){
alert("ok");
ob_load = document.getElementById('load_'+id);
ob_load.style.display='none';
ob_con = document.getElementById('img_'+id);
ob_con.style.opacity='1.0';
alert("ok");
}
</script>
|
| |
|
|
|
|
|
|
|
для: yuk
(14.04.2007 в 13:07)
| | короче проще говоря лучше обойтись без прилоудера на img... ибо не всезде правильно может работать и вообще работать | |
|
|
|
|
|
|
|
для: sidPR
(14.04.2007 в 13:10)
| | Вот дела. Очень часто для отображения чего-либо использовал visibility, а не display, а тут вовсе не обратил внимания. Просто ставишь
<img style="visibility:hidden" id='img_22' src="11042007_1442540.jpg" onload="alert('test');img_load('22');">
<script>
function img_load(id){
alert("ok");
ob_load = document.getElementById('load_'+id);
ob_load.style.display='none';
ob_con = document.getElementById('img_'+id);
ob_con.style.visibility='visible';
alert("ok");
}
</script>
|
и все везде работает | |
|
|
|
|
|
|
|
для: yuk
(14.04.2007 в 13:29)
| | а у меня onload в опере вообще не фурычить алерт даже не выходит | |
|
|
|
|
|
|
|
для: sidPR
(14.04.2007 в 13:44)
| | перенеси скрипт в <head>, все будет ОК | |
|
|
|
|
|
|
|
для: yuk
(14.04.2007 в 13:54)
| | а такой метод во всех браузерах будет нормально воспринят? | |
|
|
|
|
|
|
|
для: sidPR
(14.04.2007 в 23:50)
| | А если я сам при нажатии на какой либо объект меняю src="" как можно отследить загрузку Img ? тоесть при нажатии на объект должен появлятся мой див а потом опять картинка как она вся загрузится (появится) ? | |
|
|
|
|
|
|
|
для: sidPR
(15.04.2007 в 20:29)
| | Да, метод должен работать везде. Во всяком случае в IE, Opera, FF - работает отлично. Как я понял, с переносом скрипта в head все получилось?
А для смены src думаю можно сделать приблизительно так:
function new_img(id,img_name){
alert("Начало смены изображения");
ob_con = document.getElementById('img_'+id);
ob_con.style.visibility='hidden';
ob_load = document.getElementById('load_'+id);
ob_load.style.display='block';
ob_con.src="#";
ob_con.src=img_name;
alert("Окончание смены изображения");
}
<td valign="top">
<a href="#" onclick="new_img('22','img1.jpg')">Рисунок_1</a><br>
<a href="#" onclick="new_img('22','img2.jpg')">Рисунок_2</a>
</td>
|
Ну, разумеется, скрипт тоже размещаешь в head.
Немножко пронаблюдал различия работы этой штуки. Во всех браузерах, что есть у меня в наличии, при смене изображения метод onload вызывается сразу после смены src, а в Опере - после завершения работы скрипта. С чем это связано - затрудняюсь ответить, но при таком решении - результат одинаковый. (если поубирать alert-ы, разумеется). Но это следует учесть, если в скрипт будет что-нибудь дописываться. | |
|
|
|
|
|
|
|
для: yuk
(15.04.2007 в 22:57)
| |
function img_load(id){
ob_load = document.getElementById('load_'+id);
ob_load.style.display='none';
ob_con = document.getElementById('img_'+id);
ob_con.style.visibility='visible';
}
function color(id, name, color, namber, txt){
if(name && name != 0){
obj = document.getElementById('img_'+id);
obj_t = document.getElementById(txt+"t");
obj_c = document.getElementById(id+"c");
obj_n = document.getElementById(id+"n");
obj.src = "photo/profile/"+name;
obj_n.innerHTML = namber;
if(t)
document.getElementById(t+"t").style.color = "#9CA8B0";
obj_c.style.backgroundColor = color;
obj_t.style.color = "#FFFFFF";
}
}
|
я вот хотел в самой функции color встроить чтото типо запуска функции img_load .. может есть в JS чтото чем можно в скрипте мол указать пока не загрузицо или не появится не менять src ... =\ | |
|
|
|
|
|
|
|
для: sidPR
(15.04.2007 в 23:10)
| | Запустить можно, просто указав img_load(id);
Или сменить src, при этом выполнится метод onload и вызовет эту ф-цию.
Или просто переписать всю функцию в нужное место.
А это я что-то не пойму:
может есть в JS чтото чем можно в скрипте мол указать пока не загрузицо или не появится не менять src ... =\
| |
|
|
|
|
|
|
|
для: yuk
(16.04.2007 в 12:35)
| | ааа понял я думал что Onload действует только при рефреше страници зугрузки ее тоесть а после уже не срабатывает... разобрался спасибо | |
|
|
|
|
|
|
|
для: sidPR
(16.04.2007 в 14:37)
| | Ток у меня одра проблема если я нажимаю по одному объекту 2 раза подрят типо котоырй уже загружался этим методом у меня див не пропадает с загрузкой и картинка не появляется... только если я нажму на другой а потом вернусь :( | |
|
|
|
|
|
|
|
для: sidPR
(16.04.2007 в 14:40)
| | Это в Опере? У меня в ней была такая беда, для чего я и сделал в функции
ob_con.src="#";
ob_con.src=img_name;
|
Это решает проблему в Опере, и не мешает остальным. А ты наверное убрал ob_con.src="#"; как лишнее. | |
|
|
|
|
|
|
|
для: yuk
(16.04.2007 в 15:56)
| | Да точно... странность какаето -=\ | |
|
|
|