powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Медленная работа InnerHTML в IE.
6 сообщений из 6, страница 1 из 1
Медленная работа InnerHTML в IE.
    #36429121
InnerHTML
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Следующий код тормозит в IE, но работает с требуемой скоростью в FireFox, Opera, Safari.

Код: plaintext
1.
2.
3.
4.
5.
6.
  DT = document.getElementById("VST");
  var Span = DT.getElementsByTagName("span");
  for (var i =  0 ; i < Span.length; ++i) {
       SpanA = Span[i].getElementsByTagName("A");
       ReText = SpanA[ 0 ].innerHTML;
  }

Если закомментировать "ReText = SpanA[0].innerHTML;", то работает нормально и в IE. Как можно ускорить приведённый фрагмент кода?
...
Рейтинг: 0 / 0
Медленная работа InnerHTML в IE.
    #36429275
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InnerHTML,

приведенный фрагмент кода так:
Код: plaintext
1.
2.
3.
  DT = document.getElementById("VST");
  var Span = DT.getElementsByTagName("span");
  ReText = Span[Span.length -  1 ].getElementsByTagName('A');
  ReText = ReText[ 0 ].innerHTML;
...
Рейтинг: 0 / 0
Медленная работа InnerHTML в IE.
    #36429397
InnerHTML
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
an0nym

приведенный фрагмент кода так:

Код: plaintext
1.
2.
3.
4.
  DT = document.getElementById("VST");
  var Span = DT.getElementsByTagName("span");
  ReText = Span[Span.length -  1 ].getElementsByTagName('A');
  ReText = ReText[ 0 ].innerHTML;



Плохо сформулировал вопрос. Цикл нужен. Для каждого узла получаемые innerHTML обрабатываются и в зависимости от результатов обработки предпринимаются требуемые действия. Я их опустил в приведённом фрагменте кода, так как они не влияют на производительность. Пустой проход по циклу уже очень медленный для IE. Подправленный код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
  DT = document.getElementById("VST");
  var Span = DT.getElementsByTagName("span");
  for (var i =  0 ; i < Span.length; ++i) {
       SpanA = Span[i].getElementsByTagName("A");
       ReText = SpanA[ 0 ].innerHTML;
       Код, обрабатывающий конкретный innerHTML.
  }

Требуется найти альтернативу к innerHTML, которая при фиксированном числе вызовов давала бы большую скорость.
...
Рейтинг: 0 / 0
Медленная работа InnerHTML в IE.
    #36429427
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InnerHTMLЕсли закомментировать "ReText = SpanA[0].innerHTML;", то работает нормально и в IE. Как можно ускорить приведённый фрагмент кода?
Как вы производили замеры? Если закомментировать эту строчку, то последующий "код, обрабатывающий конкретный innerHTML" или тоже пропустится, или во всяком случае будет работать намного быстрее, так как нечего обрабатывать.

Приведите обрабатывающий код.
...
Рейтинг: 0 / 0
Медленная работа InnerHTML в IE.
    #36429501
InnerHTML
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
an0nym
Как вы производили замеры? Если закомментировать эту строчку, то последующий "код, обрабатывающий конкретный innerHTML" или тоже пропустится, или во всяком случае будет работать намного быстрее, так как нечего обрабатывать.

Приведите обрабатывающий код.


Был код, при выполнении которого не возникало видимых пользователю задержек в FireFox, Opera, Safari, но возникало сильное торможение в IE. Я стал искать причину, вызывающую торможение. Я поставил в конце кода alert и стал последовательно комментировать участки кода. В результате, следующий код выполняется с торможением:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
  DT = document.getElementById("VST");
  var Span = DT.getElementsByTagName("span");
  for (var i =  0 ; i < Span.length; ++i) {
       SpanA = Span[i].getElementsByTagName("A");
       ReText = SpanA[ 0 ].innerHTML;
       // Всё остальное уже закомментировано.
  }
  alert("Окончание обработки");

Для следующего фрагмента кода (последняя строка закомментирована) визуально задержек не видно.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
  DT = document.getElementById("VST");
  var Span = DT.getElementsByTagName("span");
  for (var i =  0 ; i < Span.length; ++i) {
       SpanA = Span[i].getElementsByTagName("A");
       // Всё остальное уже закомментировано.
  }
  alert("Окончание обработки");

Поэтому был сделан вывод, что торможение вызвано именно строкой:

Код: plaintext
1.
ReText = SpanA[ 0 ].innerHTML;

Так как торможение наблюдается и при отсутствии "код, обрабатывающий конкретный innerHTML", то он никак не может быть его причиной.
...
Рейтинг: 0 / 0
Медленная работа InnerHTML в IE.
    #36433400
InnerHTML
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заменил логику работу с использования innerHTML на использование DOM (childNodes, nodeValue). При помощи getTime замерил, что работа ускорилась приблизительно в 20 раз для IE, ускорилась в пределах погрешности для других браузеров. Проблема решена. Причина, как и ожидалось, в медленной работе innerHTML в IE.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Медленная работа InnerHTML в IE.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]