如何摆脱此消息“此页面上的脚本导致您的Web浏览器运行缓慢”

时间:2012-03-28 15:42:09

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-2 asp.net-ajax

我有一个使用Table tableRepriceResponseFiles中的Datatable插件显示数据的网页。在这里,我基本上在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 个答案:

答案 0 :(得分:1)

做客户端的事情可能很好,但是根据表的大小,JQuery和应用样式的相关插件,表格分页和排序可能需要相当多的时间。这里没有大号桌子的“硬编号”。你可以尝试一些事情:

  1. 您应用的样式应该很容易做服务器端。在视图模型中添加一个名为style的属性,并在循环浏览视图模型时使用该属性设置行颜色。

  2. 分页内容将更难实现服务器端(创建一个需要(int PageNumber, int Count)的操作方法。虽然有很多SO帖子可以做到这一点,你应该看到一个不错的性能提升如果脚本超时,则在页面加载时间。Example Post 1Example Post 2(如果您使用的是MVC3,看起来有WebGrid that can take care of this for you,但我还没有使用它而你将需要做一些腿部工作,看看它是否会为你做正确的事情)

  3. 也许您使用的JQuery插件根本不是一个好的插件?我不知道你在用什么,但是你可以和其他人一起玩,看看你是否有更好的表现。

  4. 第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对插件的感觉。