Как избавиться от этого сообщения «Сценарий на этой странице вызывает медленную работу вашего веб-браузера» - PullRequest
0 голосов
/ 28 марта 2012

У меня есть веб-страница, на которой отображаются данные с использованием подключаемого модуля Datatable в Table tableRepriceResponseFiles.Здесь я в основном делаю следующие две вещи в Javascript:

1. Если NoOfDays> 7, выделите текст красным цветом

2.Datatable Pagination

код ниже отображает следующее сообщение об ошибке скрипта.

Прекратить запускать этот скрипт?« Сценарий на этой странице вызывает медленную работу вашего веб-браузера. Если он продолжает работать, ваш компьютер может перестать отвечать на запросы

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

Мне интересно, как я могу избавиться от этого сообщения?Любые входы высоко ценятся.

<script type="text/javascript">  
$(document).ready(function () {      

 //If the NoOfDays > 7, differentiate the text in Red color
                $('#RepriceResponseFiles td.clsDays').each(function () {
                    if (parseInt($(this).text()) > 7) {
                        $(this).css("color", "red");
                    }
                });

                //Datatable Pagination
                $('#RepriceResponseFiles').dataTable(
                {
                    "sPaginationType": "full_numbers",
                    "aLengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]],
                    "iDisplayLength": 100
                });


}); 
</script>

1 Ответ

1 голос
/ 29 марта 2012

Делать что-либо на стороне клиента может быть приятно, но в зависимости от размера вашей таблицы JQuery и связанные плагины для применения стилей, разбивки на страницы и сортировки могут занимать довольно много времени.Здесь нет «жесткого числа» в размере большого стола.Вот некоторые вещи, которые вы можете попробовать:

  1. Стиль, который вы должны применять, должен быть очень простым для выполнения на стороне сервера.Добавьте свойство к вашей модели представления, называемое стилем, и используйте его для установки цвета строки при цикле по вашей модели представления.

  2. Пейджинговая реализация будет сложнее реализовать на стороне сервера(Создайте метод действия, который занимает (int PageNumber, int Count). Хотя при выполнении этого и так много публикаций SO, вы должны заметить приличное увеличение производительности при загрузке страницы, если время выполнения скрипта истекло. Пример публикации 1 , Пример сообщения 2 (Если вы используете MVC3, похоже, существует WebGrid, который может позаботиться об этом за вас , но я не использовал его, и вам потребуетсяпроделайте небольшую работу, чтобы убедиться, что она подойдет вам правильно)

  3. Может быть, используемый вами плагин JQuery просто не очень хорош? Я не знаю, кто выиспользуя, но вы можете поиграть с некоторыми другими и посмотреть, получите ли вы лучшую производительность.

Основная идея для пункта 2 будет выглядеть так:

public ActionResult GetPagedData(int pageNumber, int ItemCount){
     return PartialViewResult("MyGrid", 
     this.GetMyItems().skip((PageNumber -1) * ItemCount).Take(ItemCount));
}

В целомJQueryэто действительно хорошо, но для больших наборов данных вы получите намного лучшую производительность, если будете выполнять разбиение на страницы и сортировку на стороне сервера.Вот откуда я думаю, что ваше замедление исходит от.Как работают эти плагины JQuery, сервер отправляет весь набор данных, а JQuery показывает / скрывает строки на основе заданных вами опций.Делая это на стороне сервера, вы отправляете клиенту только те данные, которые они просматривают.Это приводит к меньшему количеству данных, отправляемых с сервера, и должно исключить предупреждение, которое вы видите.Вы все еще можете использовать AJAX-запрос для получения следующей / предыдущей страницы данных, чтобы сохранить ощущение AJAX-y плагина.

...