Главная
К библиотеке

Military.com Free Screensavers!

Динамическое содержание для IE и NN.

На этой странице вы не увидите примеров, так как они некорректно отображаются моим "Навигатором". Примеры можно посмотреть в файле drexam.html. Ошибка заключается в том, что если я использую элемент <LAYER> в таблицах, то он позиционируется абсолютно (в верхнем левом углу экрана или таблицы. Я пока не разобрался в этой причуде и не могу сказать чья это ошибка, "Навигатора" или у меня в ДНК.

Как всегда, кто знает в чем причина, пишите.

Продолжаем побеждать разработчиков различных браузеров на предмет реализации динамического HTML.

Одним из самых востребованных свойств DHTML является возможность менять содержимое "на лету". К сожалению, компании разработчики подошли к этому, так сказать, с разных сторон. В браузере Internet Explorer для этого достаточно использовать тэг <DIV></DIV>, а в Netscape Navigator это возможно сделать только с помощью элемента <LAYER></LAYER>. Элемент <LAYER> является, по сути, элементом типа document, что дает несколько большие возможности для разработчиков, чем элемент <DIV>. Например, содержимое элемента <LAYER> можно взять не из текущего файла, а из абсолютно другого с помощью атрибута SRC.

Так как элемент <LAYER> является представителем класса document, то для изменения его содержания применяется метод document.write. Необходимо заметить, что документ должен быть предварительно открыт методом document.open(mime) (mime - тип открываемого документа. В нашем случае: text/html), а после вывода - закрыт методом document.close(). В целом это выглядит так:

document.layers["layername"].document.open("text/html");
document.layers["layername"].document.write("Новое содержание");
document.layers["layername"].document.close();

С IE ситуация абсолютно другая. У каждого элемента есть свойтсво innerHTML, которое позволяет получить доступ ко всему, что расположено между начальным и конечным тэгом элемента. Например, свойство innerHTML элемента <DIV><B>Тест</B> свойств элементов </DIV> будет иметь следующий вид: <B>Тест</B> свойств элементов. Свойство innerHTML доступно как на чтение, так и на запись. Таким образом для замены содержания элемента <DIV ID="test"></DIV> нам достаточно выполнить следующее действие:

document.all.test.innerHTML = "Тестирование завершено."

Перейдем непосредственно к реализации данного метода. В тексте документа пишем следующую конструкцию:

<LAYER NAME="nnTest">
<DIV ID="ieTest">
Старое содержание.
</DIV>
</LAYER>

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

Как это работает? По рекомендации W3C браузер должен игнорировать неизвестные ему тэги, но воспроизводить их содержимое. Таким образом, неизвестный IE тэг <LAYER> будет им проигнорирован, а содержащийся в нем <DIV> отображен нормально. NN корректно отработает тэг <LAYER>, а <DIV> будет отображен, но после замены содержимого он исчезнет, так как необходимости в нем нет.

Сам код замены мы уже знаем. Только, перед его выполнением необходимо определить тип браузера. Код выглядит примерно так:

   if (NN) {
      document.layers["nnTest"].document.open("text/html");
      document.layers["nnTest"].document.write("Новое содержание");
      document.layers["nnTest"].document.close();
   }
   else {
      if (IE) {
	     document.all.ieTest.innerHTML = "Новое содержание";
	  }
	  else {
	     alert("Что за браузер мне подсунули?");
	  }
   }

Ну вот и все. Можно перейти на страницу примеров.

http://exper.ural.ru
Hosted by uCoz