Итак, рассмотрим по очереди все браузеры

Картинки:

Мы все получаем доступ к картинкам в теге <img>

Поучение происходит через колеекцию document.images[].

Так делается для всех браузеров кроме Netscape 4.

У этого браузера есть особенность загрузки картинки, если она включена в слой

Слои:

в таких браузерах как Mozilla Explorer Opera 6 любой элемент страницы можно сделать слоем.

Другая история происходит опять же в Netscape 4 и Opera 5

Тут это обычно контейнер
Код:
<div></div>
с определенным стилями absolute или relative расположением/

в Нетскейп 4 я вам посоветую юзать тег
Код:
<layer>
просто потому что он воспринимается браузером эффективнее

случаи когда
Код:
<div> и <layer>
в 4-ом Netscape ведут себя различнодостаточно редки и специфичны и связаны с глюками в форматировании содержимого слоев

Если в Нетскейпе 4 в именах классов (class=) и различных идентификаторов класса (id=) будет использоваться символ подчеркивания, то нет скейп просто не сможет определить его и проигнорит.

Теперь надо разобраться с доступами к слоям.

В различных браузерах доступ производится поразному.

Пример:

Netscape 4 —
Код:
document.layers[layerName]
DOM1 (MSIE 5+, Mozilla, Opera 5+) —
Код:
document.getElementById(layerName)
MSIE 4+ —
Код:
document.all[layerName]
еще можно вставить функцию для неопределенного браузера(очень редко)

Код:
function layer(layerName){ //DOM1 if(document.getElementById) return document.getElementById(layerName) //MSIE4 if(document.all) return document.all[layerName] //нетскейп 4 if(document.layers) return document.layers[layerName] //,браузер неопределен return null }

С доступом к слоям в Netscape 4 имеется один аспект. От связан с вложенными (nested) слоями, т. е. со слоями, которые описаны внутри контейнеров другого слоя. Пример (предполагается, что в CSS для тегов <div> задано допустимое свойство position):

Теперь про доступы к слоям в нетскейп 4

тут все попроще
Код:
<div id="mylayer"><div id="cool">xxx</div></div>

**предполагается, что в CSS для тегов <div> задано допустимое свойство position

в MSIE можно вызвать слой "cool" через
Код:
document.all["cool"]

Забыл написать, что в NetScape 4+
Код:
document.all["cool"]
вернет undefined

Если надо вызвать слои то использовать только:

Код:
document.layers["mylayer"].document.layers["cool"]
Все, теперь осталось только записать всю функцию в модернизированном виде

Код:
function findLayer(what, where){ if(!where) return var i,l,parent var len=where.length for(i=0;i<len;i++){ parent=where[i].document.layers l=parent[what] if(l) return l l=findLayer(what, parent) } return false } function layer(layerName, parentLayerName){ if(document.getElementById) return document.getElementById(layerName) if(document.all) return document.all[layerName] if(document.layers){ if(parentLayerName){ return findLayer(layerName, eval(parentLayerName)) }else{ return findLayer(layerName, document.layers) } } }