Программирование > JavaScript & JScript
innerHTML и надпись, которую нужно выводить до окончания загрузки
CGVictor:
andymc Egorsha
Госспади, народ, вы о чем вообще?? Какой аякс, какой флеш??
Логика вот такого уровня -
[off]document.getElementById("tratata").innerHTML="Pls wait";
img = new Image();
img.src=\'big.jpg\';
img.onLoad = function {document.getElementById("tratata").innerHTML=""};[/off]
* Код, ессно, просто от руки написан.
Niksen:
Я изначально немного некорректно задачу сформулировал. У меня есть НЕСКОЛЬКо картинок, не одна. Все это пишется в блок:
document.getElementById ("tratata").innerHTML="..."
onLoad тут не катит - по отношению к блоку он сработывает сразу, как только текст помещается в блок - и не ждет полной загрузки всех картинок. И что делать в таком случае?
CGVictor:
Niksen
Зачем по отношению к блоку? Он тут ни при чем.
Создай сначала (по внешнему событию, я правильно понимаю?) соотв. объекты для предзагрузки, а потом выводи в блок. Как вариант - поставить именованные img-заглушки, а в функции onLoad заменять на нормальное содержимое.
Egorsha:
Niksen
Если отлеживать загрузку, выводить надпись в блок и в блоке может быть что угодно (куча картинок), то я бы воспользовался AJAX. (Русские кодировки и кэширование - другой вопрос, но решаемый)
Вот такое решение могу предложить (как пример):
<html>
<head>
<script type="text/javascript">
function createRequestObject() {
var request = null;
if(!request) try {
request=new ActiveXObject(\'Msxml2.XMLHTTP\');
} catch (e){}
if(!request) try {
request=new ActiveXObject(\'Microsoft.XMLHTTP\');
} catch (e){}
if(!request) try {
request=new XMLHttpRequest();
} catch (e){}
return request;
}
function getAjax(data, div)
{
var request = createRequestObject();
if(!request) return false;
else
{
var obj=document.getElementById(div);
request.open("GET", data);
request.onreadystatechange = function ()
{
if (request.readyState == 4 && request.status == 200)
{
obj.innerHTML = request.responseText;
}
else obj.innerHTML=\'Подождите, идет загрузка...\';
}
request.send(null);
return true;
}
}
</script>
</head>
<body>
<div id=tratata>
Тут будет картинка и текст
</div>
<button onclick="getAjax(\'test.htm\',\'tratata\');">загрузить HTML</button>
<button onclick="getAjax(\'test.php?t=\'+Math.random(),\'tratata\');">загрузить PHP</button>
</body>
</html>
Файлы test.php, test.htm - одинаковые
<p>blah-blah-blah
<p><img src=test.jpg>
<p>blah-blah-blah
CGVictor:
Egorsha
И вот теперь пойми, что же сделает твой код.
А потом прочитай задачу. Еще раз.
Какое отношение весь твой аякс имеет к задаче предзагрузки самой картинки?
Абзац, б...
Навигация
Перейти к полной версии