Итак, рассмотрим по очереди все браузеры
Картинки:
Мы все получаем доступ к картинкам в теге <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) } } }

