Hey Leute
Ich habe ein JavaScript, welches mir per PHP eine Google Suchanfrage holt und in ein Div postet.
Danach such ich mir die ersten 5 Links der Suchabfrage raus, Speicher sie in ein Array und will diese Links dann nacheinander abarbeiten.
Eine Funktion ruft dann den Link wieder per Ajax auf und postet den Inhalt in ein Div. Dann wird der Content durchsucht (dabei werden manchmal schon so 2000-5000 Wörter überprüft). Das Problem ist nun, dass das Überprüfen des Content zu lange dauert. In Firebug kann ich sehen, wie Ajax anfängt die erste Seite zu laden, doch dann werden die restlichen 5 Seiten auch noch geladen und der Browser hängt sich auf. Wenn ich ihm sage, dass er nur eine Seite überprüfen soll, macht er das ohne Probleme. Wie kann ich also auf die die Funktion warten, welche mit den Content holt und durchsucht, so dass die Prozedur immer nur einmal durchläuft, bevor sie mit der neuen Seite wieder durchläuft?
Hier noch der Code, damit ihr einen groben Überblick habt, wie ich das meine:
[CODE]var b = 0;function sendLinks(){
var laenge = 0;
switch(links.length){
case 0: laenge=0;break;
case 1: laenge=1;break;
case 2: laenge=2;break;
case 3: laenge=3;break;
case 4: laenge=4;break;
case 5: laenge=5;break;
}
if(links.length > 5){
laenge = 5;
}
for(j = 0; j<laenge; j++){
//Array für Suchwörter
worter = new Array();
//b reseten
b = 0;
//Content des Links holen
$.ajax({
type: „POST“,
url: „getLinksContent.php“,
data: „url=“+links[j],
success: function(html){
//Inhalt in Bufferframe einfügen
document.getElementById(‚secondFrame‘).innerHTML = html;
//Alle Links dieser Seite durchsuchen
while(typeof document.getElementById(‚secondFrame‘).getElementsByTagName(‚a‘)[b]==‚object‘){
ubereinstimmung = 0;
//Suchtags in einzelne Wörter zerteilen
worter = document.getElementById(‚tags‘).value.toLowerCase().split(" „);
linkinhalt = document.getElementById(‚secondFrame‘).getElementsByTagName(‚a‘)[b].innerHTML.toLowerCase();
//Jedes Wort einzeln prüfen
for(i = 0; i<worter.length; i++){
//Logausgabe
document.getElementById(‚test‘).innerHTML = document.getElementById(‚test‘).innerHTML+‚
‘+(document.getElementById(‚secondFrame‘).getElementsByTagName(‚a‘)[b].innerHTML+“ mit "+worter[i]);
//Wenn das Wort in der Beschreibung des Links vorhanden ist
if(linkinhalt.indexOf(worter[i]) > -1){
ubereinstimmung++;
}
}
if(ubereinstimmung >= Math.round((worter.length)/2)){
finalLinks.push(document.getElementById(‚secondFrame‘).getElementsByTagName(‚a‘)[b].href);
finalNames.push(document.getElementById(‚secondFrame‘).getElementsByTagName(‚a‘)[b].innerHTML);
alert(finalNames);
}
b++;
}
}
});
}
}[/CODE]