>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >HTML моделирование Firefox не корректно обрабатывет Переменные http://forum.mozilla-russia.org/viewtopic.php?id=35620 |
mulder > 04-06-2009 23:01:00 |
Я очень люблю мозиллу, и часто люблю программировать в HTML недавно перешёл а работу со слоями. Здесь, я описываю обработчик, который определяет,что за браузер, и вписывает в переменную, именно ту команду работы, со слоем, которую сам же и поймёт... Выделить код Код:<!-- ////////////////////////////////////////////Определяем браузер/////// --> <map id="browser" /''name="firefox" /""name="sleipnir_gecko" "name="safari" ""name="konqueror" /name="ie" name="opera" name="lynx"> </map> <script> <!-- var browser_name=" "//Имя браузера, в которо открыта эта страница var gpb=" " //глобальная переменная браузеров нужна для того, чтобы можно было обращаться правильно с помощью обработчика браузера со слоями и объектами browser_name = document.getElementById('browser').getAttribute('name');//узнаём, что за браузер if(browser_name == "firefox")(gpb = document.getElementById ) //if(browser_name == "sleipnir_gecko")(gpb = ) //if(browser_name == "safari")(gpb = ) //if(browser_name == "konqueror")(gpb = ) if(browser_name == "ie")(gpb = document.all ) // Internet Explorer if(browser_name == "opera")(gpb = document.getElementById ) // Opera //if(browser_name == "lynx")(gpb = ) //--> </script> <!-- //////////////////////////////END////////////////////////////////// --> Тут, я представляю, часть кода, где при наведении на один слой мышкой, другой слой, меняет свои коардинаты. И он их меняет. в множестве браузеров. Выделить код Код:<!-- ***********************************---МЕНЮ---************************************************************* --> <DIV id="1000" class="menu0" style="z-index:1000;" onMouseover="gpb('800').style.left=150"> <!-- ПЕРВАЯ КОЛОНКА МЕНЮ --> <div id="800" class="menu1" style=" z-index:900;"> <table width="150" border="1" cellspacing="" cellpadding=""><tr><td height="30" align="center"> <b>ГЛАВНАЯ</b> </td></tr></table> </div> </DIV> <!-- ********************************************************************************************************** --> вот такие пироги. Через переменную обращение к объекту никак. А на прямую всегда пожалуйста. Может кто чего по советует.. |
Lynn > 04-06-2009 23:15:42 |
Простите, но весь этот бред нужно выкинуть. Итого, выглядеть ваш код должен примерно так Выделить код Код:<div id="a1" onmouseover="document.getElementById('a2').style.left='150px'"> <div id="a2">.... |
Sergeys > 05-06-2009 00:38:05 |
Тема перенесена из форума «Firefox» в форум «Разработка». |
mulder > 05-06-2009 21:33:49 |
Благодарю, за прямой, ответ. И правда, выкину половину, раз уже браузеры поумнели. НО если я хочу использовать часть кода в переменных , что мне сделать тогда. Выделить код Код:<DIV id="a1000" class="menu0" style="z-index:1000;" onMouseover=""document.getElementById"('a800').style.left='150 px'"> или Выделить код Код:<DIV id="a1000" class="menu0" style="z-index:1000;" onMouseover="'document.getElementById'('a800').style.left='150 px'"> Что само по себе обработчиком опеделяется, как невыполнимый код, а следовательно исключается из обработки. Может, есть в Ява определения типа переменной типа : Выделить код Код:var operand_a:of string; operand_b:of smallint; operand_c:of char; operand_d:of просто обычный кусок кода, который надо вставить как он есть; Уже становится интересно.. |
Lynn > 06-06-2009 00:32:46 |
Может вы лучше по-человечески объясните, что вам надо. Потому что в примерах выше написан очевидный бред. И, кстати, единицы измерения должны писаться вплотную к значениям. Без пробелов. |
mulder > 06-06-2009 21:33:12 |
Это не принципиально, сейчас все браузеры нормально понимают PX с Пробелом он пишется или без Мне конкретно надо, чтобы мозилла могла вместо Выделить код Код:<DIV id="a1000" class="menu0" style="z-index:1000;" onMouseover="document.getElementById('a800').style.left='150px'"> Нормально обрабатывать такое Выделить код Код:<script language="JavaScript" type="text/javascript"> var kkk="document.getElementById"; </script> <DIV id="a1000" class="menu0" style="z-index:1000;" onMouseover="kkk('a800').style.left='150px'"> ..... Остальные браузера с этим работают. А как сделать чтобы работала мозилла... |
Lynn > 06-06-2009 21:49:54 |
var kkk=document.getElementById; // без кавычек.
Если в Quirks mode, то да. Но за квиркс в 2009 году надо больно бить. |
mulder > 08-06-2009 22:42:32 |
Это положение проблемы не меняет. Пробовал и с кавычками, и без ковычек, |
Lynn > 08-06-2009 22:50:25 |
mulder |
mulder > 12-06-2009 17:44:14 |
http://narod.ru/disk/9786364000/menu.html.html При наведении на "меню№1", должна "меню №2" отпрыгивать в право. Прошу. Жду с нетерпением результата. |
Lynn > 13-06-2009 17:14:11 |
Если не сильно вдаваться в подробности, то вы скопировали функцию, но не её контекст. А getElementById ожидает, что будет запущена в контексте документа, а не непоймичего (на самом деле window). Если уж очень хочется зачем-то сделать алиас для getElementById, то можно написать так: Хотя я знаю зачем это может быть нужно. И почитайте по функции и методы в JS и как они работают. P.S. Пишите единицы измерения! |
mulder > 16-06-2009 22:08:21 |
Благодарю, мне теперь всё стало ясно. А я то думал, что это в яве прикол такой функции без вводных переменных обозначать. Но теперь то я понимаю, что плагиат, создателей явы пользу приносит , в общем теперь я вижу много общего между двумя языками. Большое вам, огромное СПАСИБО. |
Ванёк > 03-07-2009 13:14:50 |
научи меня программироать я в этом полный ноль 03-07-2009 13:17:00 |
mulder > 04-07-2009 21:59:14 |
Для начала, скачай себе программу HTML Reader Я с неё начинал. Она вроде dream wawer только русская и бесплатная. |