Javascript/ JQuery Скорость в Internet Explorer - Ajax Data
Я пытаюсь увеличить скорость на IE для следующего кода JavaScript на моей странице:
http://www.ufs.unsw.edu.au/gpa
Я создал еще одну версию этого, выполнив поиск в Интернете о некоторых советах, чтобы увеличить скорость Javascript
http://www.ufs.unsw.edu.au/gpa-fast
Вместо того, чтобы хранить значения в строке, я использовал массив для хранения значений в цикле и использовал array.join для отображения этих значений на странице.
function ajaxQuery($obj)
{
var domObj=[], i=0;
var startEXP="<div class='notesclick'><div><img src='img/notes.png' width='25' height='25' alt='notes'></div><div class='notes'><ul>";
var endEXP="</ul></div></div>";
$obj.find('Course').each(function(){
var course=$(this);
var Code = course.attr("ACAD");
var Bof = course.attr("Name");
var Yrs = course.attr("Duration");
var S2= course.attr("S2Entry");
var Stream = course.attr("FSstream");
var GPA = course.attr("GPA");
var English = course.attr("EngGrade"); var addNotes=startEXP;
//find notes
$(this).find('Note').each(function(){
var Notes=$(this).attr("Text");
addNotes=addNotes+"<li>"+Notes+"</li>";
});
addNotes=addNotes+endEXP;
if(addNotes==startEXP+endEXP)
{
addNotes=" ";
}
if(S2=="Y")
{
S2="<span class='red'>+</span>";
}else
{
S2="";
}
domObj[i]='<tr><td>'+Code+' '+S2+'</td><td>'+Bof+'</td><td>'+Yrs+'</td><td>'+Stream+'</td><td>'+GPA+'</td><td>'+English+'</td><td>'+addNotes+'</td></tr>';
i++;
/*$('#gpa tbody').append('<tr><td>'+Code+' '+S2+'</td><td>'+Bof+'</td><td>'+Yrs+'</td><td>'+Stream+'</td><td>'+GPA+'</td><td>'+English+'</td><td>'+addNotes+'</td></tr>'); */
}); //end course
$('table#gpa tbody').append(domObj.join(""));
}
и выше функция вызывается из функции init(), которая приведена ниже:
function init($xml, Yeari, Facultyi, oTable)
{
var Year=Yeari, Faculty=Facultyi, tabArr=[], i=0;
//init table
//console.log("Table is "+oTable);
//alert(Faculty+" "+Year);
if(Faculty=="all")
{
oTable.fnClearTable(); //clear previous table
//console.log("all");
$('#gpa tbody').empty();
$xml.find("Year[Year='"+Year+"']").find('Faculty').each(function(){
////console.log("Faculty "+$(this).attr("Name"));
ajaxQuery($(this));
}); //end faculty
А ниже находится основная функция, из которой вызывается init():
$(document).ready(function(){
$.ajax({
type: "GET",
url: "../loader/UNSW_UGRAD_COURSE_DATA.xml",
dataType: "xml",
success: function(xml) {
////console.log("Reading Success");
var oTable=$('#gpa').dataTable( {
"aLengthMenu": [[10, 30, 50, 100, -1], [10, 30, 50, 100, "All"]],
"iDisplayLength" : -1,
"oLanguage": {
"sSearch": "Search by keyword"
}
});
init( $(xml), 2014, "all", oTable);
streamChanger();
$('#year_btn').on("change", function(){
setYears($(xml), oTable);
streamChanger();
});
$('#faculty_btn').on("change", function(){
setOptions($(xml), oTable);
streamChanger();
});
},
error:function(){
alert("Reading failed");
}
}); //end ajax function
}); /* end ready */
Но когда я загружаю его в IE, это все равно занимает почти столько же времени, сколько страница gpa. Может кто-нибудь посоветовать мне, как я могу улучшить скорость этой страницы, пожалуйста?