Можно ли отображать таблицу в конце тега

99
12

Скажем, у меня большая таблица (пара тысяч строк), и я хочу, чтобы вся таблица отображалась как можно быстрее.


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


Когда я использую IE без объявленного doctype, браузер, похоже, ждет, пока он не получит закрывающий теги. Однако, когда я объявляю doctype, таблица начинает рендеринг сразу и поэтому приходится вычислять ширину таблицы после каждой новой строки.
Я не хочу использовать table-layout:fixed, так как я не хочу, чтобы контент был разбит на строки, где он не должен.


В IE (8) только значительная разница во времени?


(разбиение на страницы не является вариантом)


Спасибо!

спросил(а) 2010-12-21T15:58:00+03:00 9 лет, 9 месяцев назад
1
Решение
68

Вы можете скрыть таблицу до ее загрузки:

<table id="PopTable" style="display:none">
...
</table>
<script type="text/javascript">
document.getElementById('PopTable').style.display = '';
</script>

ответил(а) 2010-12-21T16:08:00+03:00 9 лет, 9 месяцев назад
40

Вы можете сделать следующее:
используйте table-layout:fixed в таблице, в то время как данные загружаются.


И после закрывающего тега таблицы добавьте небольшой script, который удаляет css.


Пример:


<table style='table-layout:fixed' id='data_table'>
<!-- All your data -->
</table>
<script type='text/javascript'>
document.getElementById('data_table').style.tableLayout = 'auto';
</script>

ответил(а) 2010-12-21T16:18:00+03:00 9 лет, 9 месяцев назад
41

Несмотря на то, что это было бы уродливое решение, вы могли бы скомпоновать этот HTML-код в document.write() -колле или так, что могло бы замедлить рендеринг.


Что-то вроде этого:

<script>document.write('<table>...</table>')</script>

ответил(а) 2010-12-21T16:00:00+03:00 9 лет, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема