Показать сообщение отдельно
  #4 (permalink)  
Старый 20.11.2009, 18:45
Новичок на форуме
Отправить личное сообщение для Arseo Посмотреть профиль Найти все сообщения от Arseo
 
Регистрация: 20.11.2009
Сообщений: 3

Уф, разгребся, вроде. Перепробовал кучу способов, так и не понял, правда, почему некоторые работают, а некоторые - нет (хотя в похожих случаях у других работало).

Заработало, когда поменял
hiddenImgNumber[npreload].onload = function() {document.getElementsByTagName('li')[npreload].getElementsByTagName('td')[1].innerHTML = img_html_name[npreload];}


на

if (hiddenImgNumber[npreload].complete) {document.getElementsByTagName('li')[npreload].getElementsByTagName('td')[1].innerHTML = img_html_name[npreload];};


При этом заработало в Опере, но перестало работать в IE. Поэтому порылся в инете и добавил еще

// IE:
   hiddenImgNumber[npreload].onreadystatechange = function() {
      if(this.readyState == "loaded"  || this.readyState == "complete") 
      {
      document.getElementsByTagName('li')[npreload].getElementsByTagName('td')[1].innerHTML = img_html_name[npreload];
      }
   };


В итоге получился такой скрипт, который работает в FF, IE и Opera:
<script language="javascript" type="text/javascript">
// images preload

function def_img_src (npreload)
{
img_html_name = eval ("img_html" + npreload);
var src_array = new Array();
src_array = img_html_name.split('src="');
src_array = src_array[1].split('"');
var img_src = src_array[0];
return img_src;
};

function hitr_preload(npreload)
{
     nnn = npreload+1;
     var img_html_name = new Array();
     var hiddenImgNumber = new Array();
     img_html_name[npreload] = eval ("img_html" + nnn);
     hiddenImgNumber[npreload] = new Image();

// FF and Opera:
if (hiddenImgNumber[npreload].complete) {document.getElementsByTagName('li')[npreload].getElementsByTagName('td')[1].innerHTML = img_html_name[npreload];};
     // 	возвращает контент второго td внутри (npreload+1)-го li в документе.

// IE:
   hiddenImgNumber[npreload].onreadystatechange = function() {
      if(this.readyState == "loaded"  || this.readyState == "complete") 
      {
      document.getElementsByTagName('li')[npreload].getElementsByTagName('td')[1].innerHTML = img_html_name[npreload];
      }
   };

     hiddenImgNumber[npreload].src= def_img_src (npreload+1);

};

var npreload=1;

</script>
Ответить с цитированием