带有AJAX内容的JQuery UI选项卡使用IE9非常慢

时间:2012-11-08 17:28:31

标签: jquery jquery-ui datatables jquery-ui-tabs

我正在使用JQuery UI Tabs和AJAX内容。

加载的数据是DataTables元素,包含~100行和10列。

FF,Chrome,Safari和Opera的一切都很好,但是对于IE9,加载的表格非常慢。

我试图在IE9中加载DataTable usin .load()方法,这很好,但是使用JQueryUI选项卡实际上并非如此。我尝试过JQueryUI 1.8.22和1.9.1,但行为是一样的。

有人已经处理过这样的问题吗?

修改

事实上,问题并没有与DataTables绑定,而是由于" large"通过AJAX加载到选项卡中的内容。此外,加载的JS代码,滚动甚至CSS:悬停都不是被动的

2 个答案:

答案 0 :(得分:1)

IE隐藏/不可见时,表格渲染速度特别慢。这是一个记录在案的问题。最好的办法是:

$('#yourTabs').tabs({
    "select": function(ev, ui){
        if(ui.index == whateverIndexYourTableIsIn) {
            dtYourTable.fnAddData(yourData);
        }
    }
});

这只会在表变得可见时呈现表(数据),因此在IE中的速度几乎没有减慢......尽管IE在这方面仍然比其他新浏览器整体慢。

讨论IE“隐藏的innerHTML慢度”

http://datatables.net/forums/discussion/1389/x#Item_8

http://datatables.net/forums/discussion/11701/why-does-datatable-run-so-slow-in-ie89-etc../p1

答案 1 :(得分:0)

我使用了修复标签内容高度。我不明白为什么,这会减慢IE(8和9)中浏览器渲染的速度。

要解决此问题,我已使用CSS属性height:90%替换了修复标签内容高度,并向datatable sScrollY": "1000px // 90% of the tab content height添加了修复表高度。我在resize上设置了一个窗口事件,用正确的值重新绘制datatable以适合窗口大小。

我希望能帮助所有面临同样IE问题的人。