Hallo zusammen,
ich habe ein sehr ärgerliches Problem und kann mir nicht so recht erklären, woher es kommt. Auch nach 2 Tagen Google-Befragung bin ich nicht wirklich weiter und hoffe, dass vielleicht einer von euch schon mal mit dem Problem zu kämpfen hatte und einen Tipp für mich hat. Wir haben bei unseren Games einen Chat eingebaut, dessen Inahlt aus einer XML, die auf unserem Server liegt, geladen wird. Dafür nutzen wird jQuery.ajax. Es funktioniert auch alles soweit. Jedoch kann man auf der Webseite eindeutig kleine (mit Chrome und guter Hardware) bis zu richtig heftige Verzögerungen (u.a. im FF) feststellen, wenn alle 1,5 Sekunden der Reload erfolgt. Dies ist z.B. sehr gut spürbar, wenn man gerade einen Text schreibt und die Buchstaben einen Moment verzögert kommen oder das Scrollen auf der Seite kurz hängen bleibt. Ich bin wirklich ratlos, was schiefläuft, schließlich lassen wir alles asynchron ausführen. :-( ...schalte ich den Chat aus, läuft die Seite wieder absolut flüssig.
Ich kopiere hier mal die relevanten Codeteile rein.
function StartChat() { if(sessionStorage.chatOpen == 1) { jQuery.ajax({url: "chat/90m.xml",dataType:'xml',type: 'GET',async: true, cache: false, success: function(data) { var cnt = 0; jQuery(data).find('chat').find('message').each(function() { var textMessage = jQuery(this).find('messageText').text().replace(';-)', '<img src="../img/smilieWink.gif" />') textMessage = textMessage.replace(':)','<img src="../img/smilieSmile.gif" />'); textMessage = textMessage.replace(':-)','<img src="../img/smilieSmile.gif" />'); textMessage = textMessage.replace(':D','<img src="../img/smilieFatSmile.gif" />'); textMessage = textMessage.replace(':-D','<img src="../img/smilieFatSmile.gif" />'); textMessage = textMessage.replace(':(','<img src="../img/smilieSad.gif" />'); textMessage = textMessage.replace(':-(','<img src="../img/smilieSad.gif" />'); textMessage = textMessage.replace(';-(','<img src="../img/smilieFrown.gif" />'); textMessage = textMessage.replace('?-(','<img src="../img/smilieConfused.gif" />'); textMessage = textMessage.replace(':-O','<img src="../img/smilieEek.gif" />'); textMessage = textMessage.replace(':-p','<img src="../img/smilieTongue.gif" />'); textMessage = textMessage.replace('8-)','<img src="../img/smilieCool.gif" />'); textMessage = textMessage.replace(':lol:','<img src="../img/smilieLol.gif" />'); textMessage = textMessage.replace(':CC:','<a href="http://www.culture-conflicts.net" target="_blank">Culture-Conflicts.net</a>'); if (textMessage.indexOf('[wiki]') != -1 && textMessage.indexOf('[/wiki]') != -1) { var wikiName = textMessage.substring(textMessage.indexOf('[wiki]') +6, textMessage.indexOf('[/wiki]')); textMessage = textMessage.replace('[wiki]','<a href="http://93.186.160.152/wiki/DE/index.php/'); textMessage = textMessage.replace('[/wiki]','" target="_blank">' + wikiName + '</a>'); } if(thisObj.lastChatMessageID <= parseInt(jQuery(this).find('messageID').text()) && thisObj.lastChatMessageID != 0) { var newText = ''; newText += '<span style="text-decoration:underline;cursor:pointer;" onclick="window.location=\'http://www.90-minutes.org/clubOverview.asp?infoTeamID=' + jQuery(this).find('teamID').text() + '\'">' + jQuery(this).find('userName').text() + '</span>' + ': ' + textMessage + '<br /><span style="font-style:italic;">(' + jQuery(this).find('messageDateTime').text() + ')</span>' + '<br /><br />'; jQuery('#chatText').html(newText); } else { var newText = jQuery('#chatText').html(); newText += '<span style="text-decoration:underline;cursor:pointer;" onclick="window.location=\'http://www.90-minutes.org/clubOverview.asp?infoTeamID=' + jQuery(this).find('teamID').text() + '\'">' + jQuery(this).find('userName').text() + '</span>' + ': ' + textMessage + '<br /><span style="font-style:italic;">(' + jQuery(this).find('messageDateTime').text() + ')</span>' + '<br /><br />'; jQuery('#chatText').html(newText); } if(parseInt(jQuery(this).find('messageID').text()) > thisObj.highestChatMessageID) { thisObj.highestChatMessageID = parseInt(jQuery(this).find('messageID').text()); } cnt++; }); thisObj.lastChatMessageID = thisObj.highestChatMessageID; jQuery('#chatTextNewDiv').css('visibility','hidden'); jQuery('#sendingChatTextImageDiv').css('display','none'); jQuery('#chatText').css('height','245px'); window.setTimeout("StartChat()", 1500); }}); } }
jQuery('#chatDrag').click(function() { if(jQuery('#chatMainDiv').css('display') == 'none') { jQuery('#chatDiv').css('height','300px'); jQuery('#chatMainDiv').css('display','block'); sessionStorage.chatOpen = 1; window.setTimeout("StartChat()", 1000); } else { jQuery('#chatDiv').css('height','20px'); jQuery('#chatMainDiv').css('display','none'); sessionStorage.chatOpen = 0; } }); Ich denke, das sind wohl die beiden relevantesten Codestellen. Den ganzen Rest drumrum lasse ich erstmal weg, um euch zu viel Lesen zu ersparen. :-) Es wäre super klasse, falls jemand hier einen Idee hat? Viele Grüße, Marius