Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Java-script: слои в IE и NN

Сообщения:  [1-5] 

 
 автор: elenaki   (14.10.2004 в 10:15)
 
   для: Igorek   (13.10.2004 в 21:00)
 

спасибо, ребята. а уж было плюнула на это дело. ну кто сейчас пользуется Нетскейпом?
у нас по статистике чуть больше одного процента не набирается таких ... смельчаков...
сейчас все работает работает. в Опере не проверяла, она у нас на 18-м месте, один клик
за месяц.

   
 
 автор: Igorek   (13.10.2004 в 21:00)   письмо автору
 
   для: glsv (Дизайнер)   (13.10.2004 в 20:48)
 

Да, забыл про комментарий. Он тут должен быть.

   
 
 автор: glsv (Дизайнер)   (13.10.2004 в 20:48)   письмо автору
 
   для: Igorek   (13.10.2004 в 20:08)
 

Супер! Работает везде.
Проверил в IE 5, Opera 7.23, Netscape 6, Mozilla FireFox 0.93

Только в Opere глючило пока не поставил внизу кода завершение комментария -->.


function hide(obj) { 
    var theObj = getObject(obj) 
    theObj.visibility = "hidden" 

-->
</script> 

   
 
 автор: Igorek   (13.10.2004 в 20:08)   письмо автору
 
   для: elenaki   (13.10.2004 в 14:58)
 

Вот! Вроде нашел. По идее должно работать во всех броузерах, но я тестил только в IE.
<script language="JavaScript">
<!--
function getObject(obj) {
    var theObj
    if (document.layers) {
        if (typeof obj == "string") {
            return document.layers[obj]
        } else {
            return obj
        }
    }
    if (document.all) {
        if (typeof obj == "string") {
            return document.all(obj).style
        } else {
            return obj.style
        }
    }
    if (document.getElementById) {
        if (typeof obj == "string") {
            return document.getElementById(obj).style
        } else {
            return obj.style
        }
    }
    return null
}
// set the visibility of an object to visible
function show(obj) {
    var theObj = getObject(obj)
    theObj.visibility = "visible"
}

// set the visibility of an object to hidden
function hide(obj) {
    var theObj = getObject(obj)
    theObj.visibility = "hidden"
}
</script>


параметр obj - это имя слоя.

   
 
 автор: elenaki   (13.10.2004 в 14:58)
 
 

искала много. нашла вот что:

Для NN мы используем обозначение слоев - layers, для IE - all, также для IE, для обозначения стиля используется - style, а в NN мы ничего не ставим
Для оптимальной работы кода мы создадим две переменные и поставим проверку на имя браузера:
if (navigator.appName == "Netscape")
{
var layerRef=".layers.";
var styleRef="";
}
else
{
var layerRef=".all.";
var styleRef=".style";
}

Теперь для NN и IE у нас есть переменные содержащие нужные обозначения и мы воспользуемся командой eval, которая как бы "склеивает" строки. Вот как будет это выглядеть:
eval("document" + layerRef +"def_sloy" + styleRef + ".visibility = 'hidden'");
Теперь пишем нужное количество строк, показывающих 'visible' и убирающих 'hidden' слои. Объединяем их в функции относительно каждого слоя. Функции должны срабатывать на ссылках по действию onclick="ИМЯ_ФУНКЦИИ", href=#. 


не работает.

потом это -
В MSIE 4 и DOM1-браузерах доступ к свойству осуществляется через объект .style. Пример (используется уже определенная нами функция вызова слоя): 

// спрятать слой в MSIE4 и DOM1-браузерах
layer("mylayer").style.visibility="hidden"
В Netscape 4 у слоя нет поля style, доступ к свойствам осуществляется непосредственно: 

// спрятать слой в Netscape 4
layer("mylayer").visibility="hide"
Можно заметить, что даже значение, которое нужно присвоить свойству .visibility, разное у разных браузеров. Хотя более новые версии 4-ого Netscape поддерживают не только "show"/"hide", но и "visible"/"hidden", как и MSIE. 

Для доступа к стилям можно порекомендовать такую функцию: 

function layerStyle(layerObject){
  if(layerObject.style) return layerObject.style //доступ через style
  return layerObject //доступ без style
}
Вместе с которой наш пример сократится до layerStyle(layer("mylayer")).visibility=isNetscape4?"hide":"hidden"


не работает.


всего-то одна строка кода!

function show()
{ if (navigator.appName == "Netscape")
{ document.layers.info.visibility = "show";}
else
{ document.all.info.style.visibility = "vizible";}
}
function kill()
{if (navigator.appName == "Netscape")
{ document.layers.info.visibility = "hide";}
else
{ document.all.info.style.visibility = "hidden";}
}


IE ругается: Could not get the visibility property. Inavlid argument.

я сам уже почти инвалид. на голову. помогите! в чем дело? ведь kill() работает (если слой сделать изначально видимым)

   

Сообщения:  [1-5] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования