我知道 IE javascript 的性能与 FF 和 Chrome 相比非常糟糕,但我的大多数用户都使用 IE8。我没有注意到 FF 中的性能问题(惊喜)。我将 Jquery 和 Jquery-ui 用于对话框功能。
基本上,我使用 ajax 将大量链接加载到对话框中。我第一次单击按钮打开对话框时,它加载得非常快(~0.1 秒)。但是,当我关闭对话框并再次打开它时,它需要更长的时间才能显示出来。
数据库和 ajax 调用不是问题。数据被附加到对话框中,我使用简单的逻辑来确保不会再次调用该函数。随后尝试打开对话框应该会更快。
使用 IE8 的分析器,我注意到有数以万计的调用:
"hidden" "curCSS" "JScript - window script block"
我第一次打开对话框时不会出现这些函数调用。我不知所措是有原因的。
显然,第一次加载对话框中的各个元素时没有任何脚本编写,但为什么这会在后续调用中发生变化?
一些代码:
$(文档).ready(函数 () {
$("#dialog").dialog({
autoOpen: false,
resizable: false,
draggable: false,
closeText: "",
width: "auto",
dialogClass: "ddx",
});
$("#button").click(function (e) {
e.preventDefault();
//Check if "this" is empty, if not, data is already loaded
if ($.trim($("#dialog").html()).length > 0) {
$("#dialog").dialog("open");
}
else {
$.ajax({
url: baseUrl,
dataType: "text",
success: function (data) {
$("#dialog").append(data);
}
});
$("#dialog").dialog("open");
}
});
});
正文中的html:
<div id="dialog" title="Test Dialog" class="ddx"></div>
该对话框最终包含具有数百个 li 的多层嵌套列表。