2010-08-04 4 views
2

Я рассматриваю проблему, по которой содержимое страницы ASP.Net MVC переходит в исходное положение.ASP.net MVC - Остановка отображения страницы до завершения JQuery

Если я помещаю точку отладки в один из наших .js-файлов, я вижу, что страница уже отображена в ее исходные позиции, а затем .js-файлы выполняют свои действия, и страница перерисовывается в правильное состояние. Это происходит довольно быстро, но достаточно медленно, что можно увидеть скачок на экране.

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

ответ

3

Я не уверен, понимаю ли я, что там происходит. Вы можете попробовать, сделав верхний контейнерный элемент страницы невидимым до тех пор, пока скрипт не будет выполнен.

В файле CSS просто присвоить свойство display: none CSS для контейнера, или еще лучше, сделать это в встроенный стиль для элемента, как это:

<body> 
<div class="body invisible" style="display: none;"> 
Your content 
</div> 
<script type="text/javascript"> 
    $("div.body").removeClass("invisible"); //in case JS is present, don't reveal the element until scripts execute. 
</script> 
<style type="text/css"> 
    div.invisible {display: block !important;} /*In case no JS support present, reveal the content after page fully loads*/ 
</style> 
</body> 

Тогда в JS сделать что-то вроде этого:

/*Your big JS code*/ 
$("div.body").css("display", "block"); //sets it visible again after code finishes 

Вы можете даже поместить Loading рисунок на странице в это время. Просто поместите видимый контейнер с этим фоновым изображением, и, когда тело станет видимым, сделайте это изображение невидимым.

И еще один из возможных решений, чтобы экспериментировать с (не уверен о совместимости браузера): http://bytes.com/topic/javascript/answers/738083-how-suspend-layout

Но оказывается, что здесь беднее решение было принято: Suspend layout during DOM interaction

+0

проблема здесь будет, если браузер отключил javascript, тогда страница не будет отображаться ... – Reigel

+0

это препятствует доступности – rochal

+0

Да, правда. Но таких браузеров мало. Обходным путем было бы разместить элемент