Хелп! Netscape + JS + layers
От: Аноним  
Дата: 01.03.03 06:14
Оценка:
Доброе время суток!

Подскажите пожалуйста, где я не прав.

if (Netscape) {

  // Взято с htmlbook.ru. Не работает. 
  // И вариант в блоке else также не работает в Netscape.
  document.layers["lay1"].left = newLeft;
  document.layers["lay1"].top = newTop;
}
else {
  document.all["lay1"].style.left = newLeft;
  document.all["lay1"].style.top = newTop;

  // Взято из головы (своей, больной). Не работает нигде.
  document.all["lay1"].style.width = newWidth;
  document.all["lay1"].style.height = newHeight;
}


Подскажите плиз URL нормального справочного ресурса по JS и стилям HTML. Все, что мне удалось найти через yandex, слив. Даже иерархия объектов толком не описана, не говоря уж о стилях.

Заранее ОГРОМНОЕ спасибо!

С уважением,
Дм.Григорьев
Re: Хелп! Netscape + JS + layers
От: uzzy Россия  
Дата: 01.03.03 07:39
Оценка: 2 (1)
Здравствуйте, Аноним, Вы писали:

А>Доброе время суток!


А>Подскажите пожалуйста, где я не прав.


А>
А>if (Netscape) {

А>  // Взято с htmlbook.ru. Не работает. 
А>  // И вариант в блоке else также не работает в Netscape.
А>  document.layers["lay1"].left = newLeft;
А>  document.layers["lay1"].top = newTop;
   // попробуй так 
    obj = document.getElementByID ("lay1");
    obj.style.left = newLeft;
    obj.style.top = newTop;
А>}
А>else {
// Это для IE
А>  document.all["lay1"].style.left = newLeft;
А>  document.all["lay1"].style.top = newTop;

А>  // Взято из головы (своей, больной). Не работает нигде.
А>  document.all["lay1"].style.width = newWidth;
А>  document.all["lay1"].style.height = newHeight;
А>}
А>


А>Подскажите плиз URL нормального справочного ресурса по JS и стилям HTML. Все, что мне удалось найти через yandex, слив. Даже иерархия объектов толком не описана, не говоря уж о стилях.


Где не помню, в инете с полгода назад по JS pdf клевые валялись (английские правда).
По CSS самое нормальное описание в MSDN .
Там же и по JS есть кое-что.
Re[2]: Хелп! Netscape + JS + layers
От: Аноним  
Дата: 02.03.03 09:19
Оценка:
Здравствуйте, uzzy, Вы писали:

U> // попробуй так

U> obj = document.getElementByID ("lay1");
U> obj.style.left = newLeft;
U> obj.style.top = newTop;

Не помогло.
Re[3]: Хелп! Netscape + JS + layers
От: Bob Kotl Россия  
Дата: 02.03.03 12:40
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, uzzy, Вы писали:


U>> // попробуй так

U>> obj = document.getElementByID ("lay1");
U>> obj.style.left = newLeft;
U>> obj.style.top = newTop;

А>Не помогло.

М-да. И не поможет особенно если имеется в виду 4-е Netscape'ы. getElementByID есть только начиная с 6-го, а коллекции document.all отродясь там не было.
В общем, если интересует дока по 4-му Netscape'у, могу на мыло или какой-нить частный ftp положить. Лучше второй вариант
Re[4]: Хелп! Netscape + JS + layers
От: Аноним  
Дата: 02.03.03 14:16
Оценка:
Здравствуйте, Bob Kotl, Вы писали:

BK>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, uzzy, Вы писали:


U>>> // попробуй так

U>>> obj = document.getElementByID ("lay1");
U>>> obj.style.left = newLeft;
U>>> obj.style.top = newTop;

А>>Не помогло.

BK>М-да. И не поможет особенно если имеется в виду 4-е Netscape'ы. getElementByID есть только начиная с 6-го, а коллекции document.all отродясь там не было.
BK>В общем, если интересует дока по 4-му Netscape'у, могу на мыло или какой-нить частный ftp положить. Лучше второй вариант

Спасибо, не надо. У меня седьмой (последний слитый с netscape.com — 7.02), в котором navigator.appVersion.substring(0,1) возвращает 5. Только что догадался слить доки по JS оттуда же , теперь сижу читаю. Если чего найду, поделюсь.

С уважением,
Дм.Григорьев
Re[5]: Yes!!!
От: Дм.Григорьев  
Дата: 02.03.03 16:36
Оценка:
А>Здравствуйте, Bob Kotl, Вы писали:

BK>>Здравствуйте, Аноним, Вы писали:


А>>>Здравствуйте, uzzy, Вы писали:


U>>>> // попробуй так

U>>>> obj = document.getElementByID ("lay1");
U>>>> obj.style.left = newLeft;
U>>>> obj.style.top = newTop;

А>>>Не помогло.

BK>>М-да. И не поможет ...

Вы будете смеяться, но сработало:

obj = document.getElementById ("lay1");  // последняя буква строчная!!!
obj.style.left = newLeft;
obj.style.top = newTop;


А чтобы до этого дойти, была использована следующая функция, уже успел забыть с какого сайта стащил:

function getObjectPropertiesString(obj) {
    var result = "";
    for (var i in obj)
        result += i + " = " + obj[i] + "<br>";
    return result;
}

...
document.write(getObjectPropertiesString(obj));
   // Netscape возвращает: style = [object CSSStyleDeclaration]
   // IE возвращает: style = [object] 
document.write(getObjectPropertiesString(obj.style));
   // свойства left, top присутствуют и у IE, и у Netscape


Всем спасибо за участие!

P.S. Остался вопрос с динамическим изменением размеров области. С помощью описанной выше функции обнаружил в obj.style несколько полей, и ни одно не работает (IE, Netscape даже не пробовал):

obj.style.posRight = obj.style.posLeft + 50;
obj.style.posBottom = obj.style.posTop + 50;
obj.style.right = obj.style.left + 50;
obj.style.bottom = obj.style.top + 50;
obj.style.posWidth = 50;
obj.style.posHeight = 50;
obj.style.width = 50;
obj.style.height = 50;


Похоже, это вообще невозможно Может, кто знает какое колдовство? Кстати, вот цитата из доков от Netscape: "Qnce layout has occurred, setting a property value does not affect its value or appearance." Может тут все дело? Тогда имеется ли возможноть программно заставить его сделать re-layout?
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[6]: Yes!!!
От: uzzy Россия  
Дата: 03.03.03 09:24
Оценка:
Здравствуйте, Дм.Григорьев, Вы писали:

ДГ>Вы будете смеяться, но сработало:

Ха-ха-ха


ДГ>P.S. Остался вопрос с динамическим изменением размеров области. С помощью описанной выше функции обнаружил в obj.style несколько полей, и ни одно не работает (IE, Netscape даже не пробовал):

Какой области, если можно поконкретней.

а так посмотри код:
function getObjByName (objName)
{
   obj = null;
   if (isIE)
      obj = document.all[objName];
   if (isNN)
      obj = document.getElementById (objName);
   return obj;   
}

function resize ()
{
   _offset = 90;
   if (isIE || isNN)
   {
      bodyObj = getObjByName("body");
      if (bodyObj)
      {
         if (isIE)
         {
            winHeight = parseInt (bodyObj.offsetHeight + "");
            winWidth = parseInt (bodyObj.offsetWidth + "");
         }
         if (isNN)
         {
            winHeight = parseInt (innerHeight + "");
            winWidth = parseInt (innerWidth + "");
         }
         if (winHeight < 310)
            winHeight = 311;
      } else 
         return;
      
      divMenuObj = getObjByName("div_menu");
      if (divMenuObj)
         divMenuObj.style.height = ((winHeight - 8) > 0) ? (winHeight - 8) : 1;
      else
         return;
      divViewObj = getObjByName("div_view");
      if (divViewObj)
      {
         divViewObj.style.height = ((winHeight - 8) > 0) ? (winHeight - 8) : 1;
         divViewObj.style.width = ((winWidth - 205 - 12) > 0) ? (winWidth - 205 - 12) : 1;
      } else
         return;
      q = (winHeight - _offset) % 10;
      maxTopMenu = winHeight - _offset - q;
   }   
   return;
}
Re[7]: No...
От: Дм.Григорьев  
Дата: 03.03.03 14:45
Оценка:
Здравствуйте, uzzy, Вы писали:

ДГ>>P.S. Остался вопрос с динамическим изменением размеров области. С помощью описанной выше функции обнаружил в obj.style несколько полей, и ни одно не работает (IE, Netscape даже не пробовал):

U>Какой области, если можно поконкретней.

U>а так посмотри код:

U>
U>divViewObj.style.height = ...;
U>divViewObj.style.width = ...;
U>


Сдается мне, я криво <DIV> объявляю, если у меня не пашет этот код, который в огромном количестве примеров фигурирует. Не посмотришь? Вот html:

<div id=laywall style="position: absolute; left: 0px; top: 0px; width: 200px; height=100; z-index: 9">
<img src="wallpaper.gif" ...>
</div>

<div id=laymain style="position: relative; z-index: 10">
...
</div>


Заранее спасибо.
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[8]: No...
От: andik  
Дата: 03.03.03 15:11
Оценка:
Здравствуйте, Дм.Григорьев, Вы писали:

U>>а так посмотри код:

U>>
U>>divViewObj.style.height = ...;
U>>divViewObj.style.width = ...;
U>>


проблема скорей всего под Нетскейпом
указывай top, left, height, width в px


  var top = 100;
  var left = 100;
  ...
  divViewObj.style.top = top + "px";
  divViewObj.style.left = left + "px";
  divViewObj.style.height = height + "px";
  divViewObj.style.width = width + "px";
Re[8]: No...
От: uzzy Россия  
Дата: 03.03.03 17:02
Оценка: 2 (1)
Здравствуйте, Дм.Григорьев, Вы писали:

ДГ>Здравствуйте, uzzy, Вы писали:


ДГ>>>P.S. Остался вопрос с динамическим изменением размеров области. С помощью описанной выше функции обнаружил в obj.style несколько полей, и ни одно не работает (IE, Netscape даже не пробовал):

U>>Какой области, если можно поконкретней.

U>>а так посмотри код:

U>>
U>>divViewObj.style.height = ...;
U>>divViewObj.style.width = ...;
U>>


ДГ>Сдается мне, я криво <DIV> объявляю, если у меня не пашет этот код, который в огромном количестве примеров фигурирует. Не посмотришь? Вот html:


ДГ>
ДГ><div id=laywall style="position: absolute; left: 0px; top: 0px; width: 200px; height=100; z-index: 9">
ДГ><img src="wallpaper.gif" ...>
ДГ></div>

ДГ><div id=laymain style="position: relative; z-index: 10">
ДГ>...
ДГ></div>
ДГ>


Во-первых все параметры тегов лучше заключать в ковычки (это я про id),
Во-вторых в style первого div-а
не
height=100
а
height:100
Полагаю это всего лишь опечатка, но все-таки

В-третьих: "px", как говорил andik не обязателен, тот код который я предоставил с сайта который вполне работает и оттестирован на IE 5.0 , Mozila (одна из последних версий). И вопрос что, именно тебе нада? Resize-ить div или img?
... << RSDN@Home 1.0 beta 6a >>
Re[9]: Все ok.
От: Дм.Григорьев  
Дата: 03.03.03 17:37
Оценка:
Здравствуйте, uzzy, Вы писали:

U>В-третьих: "px", как говорил andik не обязателен, тот код который я предоставил с сайта который вполне работает и оттестирован на IE 5.0 , Mozila (одна из последних версий). И вопрос что, именно тебе нада? Resize-ить div или img?


Ресайзить надо div. И ты прав — все работает. А в какой момент заработало и почему — не понял. Скорее всего, где-то в выражениях у меня были строки вместо чисел. Прошу прощения, что напрягал по такому пустяку. Большое спасибо за помощь!
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[10]: Все ok.
От: uzzy Россия  
Дата: 03.03.03 17:44
Оценка:
Здравствуйте, Дм.Григорьев, Вы писали:

ДГ>Ресайзить надо div. И ты прав — все работает. А в какой момент заработало и почему — не понял. Скорее всего, где-то в выражениях у меня были строки вместо чисел. Прошу прощения, что напрягал по такому пустяку. Большое спасибо за помощь!


Вы прощены ... я честно говоря над тем кодом тоже долгое время сидел и-за одной опечатки... с кем не бывает . Удачи.
... << RSDN@Home 1.0 beta 6a >>