IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   IE vs Netscape или как добиться совместимости. (http://www.imho.ws/showthread.php?t=54908)

Izzyy 26.03.2004 21:55

IE vs Netscape или как добиться совместимости.
 
Я смотрю, для многих пользовательей форума, тема весьма болезненая :mad:. К сожалению и меня как и многих других это не обошло стороной. А поэтому у меня вопрос такой, есть следующий код:

<tr onMouseOver="event.srcElement.className='menusel'"
onMouseOut="event.srcElement.сlassName='menu'">

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

так же имеется:

var DayOfWeek = new Array("Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница ","Суббота");
var MonthName = new Array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август", "Сентябрь","Октябрь","Ноябрь","Декабрь");
var Current = new Date;

document.getElementById('Month').innerHTML=MonthName[Current.getMonth()];
document.getElementById('Day').innerHTML=Current.getDate();
document.getElementById('Year').innerHTML=Current.getYear();
document.getElementById('WeekDay').innerHTML=DayOfWeek[Current.getDay()];

опять же в ИЕ все идет на ура, а вот Опера с Нетскейпом кроме месяца ничего не отображают. Долго я бился с этой задачкой так вот и не понял в чем проблема. Может кто знает куда копать и где смотреть? Подскажите, плиз.



2 Moderators: Вам не кажеться, что стоить организовать отдельную тему если не раздел на форуме, посвященный данным вопросам?А то я заметил, что последние время народ начал с этим сталкиваться все чаще и чаще.

RaZEr 26.03.2004 22:50

Цитата:

<tr onMouseOver="event.srcElement.className='menusel'">
this.className

Цитата:

var Current = new Date;
скобки поставь.

Цитата:

а вот Опера с Нетскейпом кроме месяца ничего не отображают
Все должно отображаться. Может только устаревший getYear() стОит заменить на getFullYear().

Цитата:

Вам не кажеться, что стоить организовать отдельную тему если не раздел на форуме, посвященный данным вопросам?
создай. я что мешаю :biggrin:

Izzyy 26.03.2004 23:06

Ок.

1. this.className не подходит изначально т.к. после <tr> идет куча <td>, а event.srcElement.className им и менял имя класса я просто таким образом хотел сэкономить и не писать для каждой ячейки обработчик, в ИЕ это работате на ура.

2. Говоря скобки ты это имел ввиду: Current= new Date()?

3. Смотри то что должно отображаться я и сам понимаю, проблема в том, что не отображается. А если не отображается значить где-то ошиПся. Мне кажется, что надо явно преобразовать все в строки, а потом присваивать в innerHTML, так как месяц то отображается. Единственное, что пугает, что если месяц отображаеться то и день недели должен по идеи отображаться, а вот только не ничего подобного.... Т.е. проблема остается открытой.

4. А тему то я создам, не вопрос. А кто ее поместит в самый верх раздел, да еще и пометит "Важно"?

RaZEr 26.03.2004 23:18

1. event.target
2. да
3. JS автоматически все преобразовывать должен.
4. Когда там будет что-либо важное, тогда я помечу, а пока все на словах.

Izzyy 26.03.2004 23:28

Цитата:

1. event.target
спасибо ща пойду проверять.
Цитата:

2. да
не думаю, что это принципиально, но попробую, тем более как я уже сказал название месяца отображаеться.
Цитата:

3. JS автоматически все преобразовывать должен.
смею заметить, что ничего подобного он не должен, если это делаеться производителями-разработчиками в одном месте вовсе не обязательно, что так будет и в другом. Иначе у меня не было бы сейчас таких проблем.
Цитата:

4. Когда там будет что-либо важное, тогда я помечу, а пока все на словах.
смотри тему я разместил, осталось надеятся, что народ ее поддержит, поживем увидим.

RaZEr 26.03.2004 23:33

Цитата:

смею заметить, что ничего подобного он не должен
И почему же если не секрет?

Izzyy 26.03.2004 23:42

Да потому, что не должен! Следить за корректностью и правильным форматом данных должен програмист, а не компилятор, то что майкрософт добавили эту возможность интерпритатора в ИЕ не о чем не говорит.
Посмотри тут статейку.

RaZEr 27.03.2004 00:00

Цитата:

Да потому, что не должен! Следить за корректностью и правильным форматом данных должен програмист, а не компилятор, то что майкрософт добавили эту возможность интерпритатора в ИЕ не о чем не говорит.
Программист должен сделить за правильной работой своей программы, а кто будет следить за типами данных, утечками памяти и т.д. это риторический вопрос (Java, C#, PHP ...). Что же касается JS, то возьми например код:
Код:

var abc = "100";
var cde = 20;
var fgh = abc*cde;
alert(fgh);

Ну как же так? Разве можно умножать строку на число :) ? Но как видишь это работает, и в IE, и Mozilla и в Opera. В разработке последних двух MS участия не принимал.

Izzyy 27.03.2004 00:17

Я не сказал, что это не работает. Я сказал, что это не всегда работает корректно и поэтому у меня ничего не отображаеться. Выходит, что ошибка в другом. В чем?

RaZEr 27.03.2004 00:19

Пости код страницы. Сейчас я спать наверну завалюсь, а если до утра никто тебе не разъяснит ситуацию, - помогу.

Izzyy 27.03.2004 00:35

Код:

<table cellspacing=0 cellpadding=0 border=1 align=right style="background-color:#e1e1e1;float:right;">

            <tr>
              <td id="Month" class="date"></td>
                    <td id="Year" class="date"></td>
            </tr>

            <tr>
              <td  background="dateback.gif" colspan=2 id="day" style="background-color:white;text-align:center;font-family:Impact;font-size:32pt;font-weight:bold"></td>
            </tr>

            <tr>
              <td colspan=2 id="WeekDay" style="background-color:#64CDFF;padding:0.2em;text-align:center;font-family:Arial;font-size:12pt"></td>
            </tr>

          </table>

Я думаю этого хватит?

joker99 27.03.2004 01:42

Netscape, Opera у меня сейчас нет, но я пмню что как то в Netscape он более серъёзно отнисится к кейсу букв в javasctipte, может дело в этом?

Я имяю ввиду поменяй id="day" на id="Day".

Izzyy 27.03.2004 02:06

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

rontommy 27.03.2004 02:07

Izzyy
Не совсем в тему, но рекомендую все стили вынести в файл, так и код легче и читабильней будет, да и менять потом стиль в одном месте намного легче.

Izzyy 27.03.2004 02:24

rontommy
Не совсем в тему? Ты уж не обижайся, но это совсем не в тему. Для этого и придумали приват.;)

ЛюДиииииии ну не ужели нет решения для этой проблемы ведь в ИЕ все работает как часы.:ooh: :confused:

RaZEr 27.03.2004 10:53

Цитата:

ЛюДиииииии ну не ужели нет решения для этой проблемы ведь в ИЕ все работает как часы.
joker99 дело говорит. У тебя там регистр разный - "day" и "Day". А JS регистрозависимый язык (про MS JScript я просто молчу).

Izzyy 27.03.2004 17:28

Да нет дело не в ригистре было, а в скобках, вчера поздно было и башка раскалывалась, так вот и оставил все на сегодня, а с утра проверил и заработало. Date() :cool: А Javascript он чуствителен только к регистру переменных, функций и т.д., но не в этом случае.
ТО RaZer: Спасибо за помощь:yees:


Часовой пояс GMT +4, время: 05:06.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.