Автор Тема: javascript & mozilla  (Прочетена 2930 пъти)

KeuH

  • Напреднали
  • *****
  • Публикации: 68
    • Профил
javascript & mozilla
« -: Aug 27, 2004, 15:59 »
Здравейте!  Едно меню пиша днес и имам проблеми с Мозила.  Получава се следната неприятност.  След като всичко се зареди Мозила казва "Done", горе знаменцето не се вее, но курсорът е часовник и стрелка и лентата за зареждане е заредена само до половината.  Нямам никакви грешки в самия JavaScript според конзолата, освен това май нямам безкрайни цикли и нищо такова.  Ето го кода:

Примерен код


document.write(begin);
   document.write("<table class='menu' cellspacing='0'>");
   document.write("<tr><td class='menu_title'>" + menuTitle + "</td></tr>");
   for (i = 0; i < numberOfItems; i++) {
      if (activeItem == i) {
         document.write("<tr><td class=\"menu_first_level_active\"><a href='" + itemsLinks[i] +
                     "'>" + items[i] + "</a></td></tr>");
         for (j = 0; j < levelTwoItems[i].length; j++) {
            document.write("<tr><td class=\"menu_second_level_inactive\"><a href='" + levelTwoLinks[i][j] +
                     "'>" + levelTwoItems[i][j] + "</a></td></tr>");
         }
      }
      else {
      document.write("<tr><td class=\"menu_first_level_inactive\"><a href='" + itemsLinks[i] +
                  "'>" + items[i] + "</a></td></tr>");
      }
   }
   document.write("</table>");
   document.write(end);



В ИЕ този код не дава грешки.  Ако някой може да ми помогне ще му бъда безкрайно благодарен.  Човекът, за когото пиша менюто иска то да е съвместимо с мозила, така че е важно да работи под Мозила...
Активен

BULFON

  • Administrator
  • Напреднали
  • *****
  • Публикации: 478
  • Distribution: Fedora
  • Window Manager: Gnome
    • Профил
javascript & mozilla
« Отговор #1 -: Aug 27, 2004, 17:42 »
Първо - кога се случва писането в документа?
Ето и малко съвети - пиши в началото
document.open()
//do the write here
document.close()

Друга идея - вмъкни кода в края на страницата с innerHTML

Или създай менюто изцяло с DOM-a, или serverside ако това е възможно.
Активен

фонокартен телефонен апарат

KeuH

  • Напреднали
  • *****
  • Публикации: 68
    • Профил
javascript & mozilla
« Отговор #2 -: Aug 27, 2004, 20:28 »
Благодаря за съвета на BULFON!  Използването на

Примерен код

document.open()
document.write("one two three...")
document.close()


реши проблема с безкрайното чакане при Мозила!

Що се отнася до innerHTML, нещо от сорта ли имаше предвид:

Примерен код

document.getElementById('something').innerHTML += "End of page!";


А за изцяло с DOM, какво имаш предвид?  DOM е начин за адресиране на елементите от някоя уеб страница и трябва да се използва в комбинация с някакъв скриптов език като JavaScript, или VBScript.
Активен

BULFON

  • Administrator
  • Напреднали
  • *****
  • Публикации: 478
  • Distribution: Fedora
  • Window Manager: Gnome
    • Профил
javascript & mozilla
« Отговор #3 -: Aug 27, 2004, 20:45 »
1. За innerHTML:
ами ако искаш менюто ти да се намира в някакъв елемент (т.е. този елемент да съдържа менюто) и този елемент е с id="menuContainer", можеш вместо поредица от последователни извиквания на document.write да правиш sMenuCode += "some html code" и накрая да направиш
document.getElementById( 'menuContainer' ).innerHTML = sMenuCode
2. За решение с DOM - ами имам предвид да създадеш менюто като поредица от елементи (nodes) чрез document.createElement и да ги вложиш един в друг чреш element.appendChild. Но този подход едва ли въобще е необходим в случая. Така или иначе ти вече имаш решение '<img'>
Поздрави
Активен

фонокартен телефонен апарат

KeuH

  • Напреднали
  • *****
  • Публикации: 68
    • Профил
javascript & mozilla
« Отговор #4 -: Aug 28, 2004, 13:46 »
В крайна сметка направих менюто с innerHTML, защото document.open() изтрива всички променливи под Мозила!!!  За съжаление innerHTML е супер бавно!  По-някога наистина се замислям, дали ИЕ не е най-добрия браузър... '<img'>
Активен

KeuH

  • Напреднали
  • *****
  • Публикации: 68
    • Профил
javascript & mozilla
« Отговор #5 -: Aug 28, 2004, 13:50 »
ама само понякога, защото konqueror е Но:1 '<img'> '<img'>
Активен

BULFON

  • Administrator
  • Напреднали
  • *****
  • Публикации: 478
  • Distribution: Fedora
  • Window Manager: Gnome
    • Профил
javascript & mozilla
« Отговор #6 -: Aug 30, 2004, 18:25 »
Здравей,
за да продължим с темата '<img'>
innerHTML е бавно, особено ако в този код който показа е началото на темата просто си заменил document.write с element.innerHTML. Т.е. пишеш много пъти в един и същ елемент незавършен HTML.
Но дори и да не е така, доколкото знам мозилла всеки път когато присвояваш стойност на innerHTML всъщност браузера преработва твоят HTML код в елементи на DOM-a. (т.е. случват  се няколко (поне) извиквания на removeChild, appendChild, createElement + проверки за валидност на кода)
Другото - ползваш таблици. Можеш да ползваш значително по прост синтаксис само като ползваш A-таговете и CSS
Активен

фонокартен телефонен апарат