piet: suche nach allen id's gibt merkwürdigen Rückgabewert

Hallo,

ich suche meine Seite mit einem Javascript nach allen id's ab die als String zurückgegeben werden. Heute beim testen sehe ich das id's zurückkommen die gar nicht auf der Seite vorhanden sind. (Quelltext im Browser)

Die Funktion zum lesen aller id's benutze ich schon seit Jahren

function ReadAllId(oElm, strTagName, strAttributeName)
{
/*
lese alle ID's von Webseite ein, außer wenn ID-Name mit Kleinbuchstaben beginnt.
Falls keine ID auf der Webseite vorhanden ist wird eine Fehlermeldung angezeigt.
Rueckgabewert: gebe alle ID's in einem String zurück
*/
	var arrElements = (strTagName == '*' && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var StrReturnElements = '';
	var erster = 0;
	
	for(var i=0; i<arrElements.length; i++)
	{
		if (arrElements[i].id == '' || (arrElements[i].id.substr(0,1) >= 'a' && arrElements[i].id.substr(0,1) <= 'z' )) {continue;}
		
		if (erster==0)
		{StrReturnElements = arrElements[i].id;erster=1;}
		else
		{StrReturnElements += '&' + arrElements[i].id;}
	}
	if (StrReturnElements == '')
	{alert("Es wurde keine passende ID auf der Webseite gefunden.\nFunktion:\"ReadAllid\"");}
	else
	{return StrReturnElements;}
} 

Hier der Aufruf der Funktion

param = ReadAllId(document.body, "*" , "id");
param = ReadAllId(document.body, "*" , "id");

Die "nichtvorhanden" id lauten ... unter anderem SL_Ghelp, SL_dots2, SL_Gfeedback, SL_dots1, SL_tts, SL_font ..... die ersten beiden Buchstaben sind immer SL

Hier bin ich absolut überfragt, wie das zu stande kommmt ??

Gruß piet

PS: Falls Codeoptimierung/Verbesserung erwünscht, nur her damit ;-)

  1. Servus piet,

    Die "nichtvorhanden" id lauten ... unter anderem SL_Ghelp, SL_dots2, SL_Gfeedback, SL_dots1, SL_tts, SL_font ..... die ersten beiden Buchstaben sind immer SL

    Ohne den Code groß gelesen zu haben würde ich schätzen, dass noch andere Javascripts auf deiner Seite vorhanden sind, die DOM-Elemente erstellen und hinzufügen.

    Schau dir deinen Quelltext außerdem mit Entwicklertools an (in Chrome z.B. per F12 aufrufbar), nicht mit der normalen Quelltextanzeige oder gar der HTML-Datei selbst. Dynamisch von Javascript erstellte Elemente sind da nicht zu sehen.

    ciao

    --
    "Lohnt es sich, die Menschen zu retten? So wie ich die Sache sehe, ist die Intelligenz bereits ausgerottet und es leben nur noch die Idioten."
    1. Hallo henman

      Servus piet, Schau dir deinen Quelltext außerdem mit Entwicklertools an (in Chrome z.B. per F12 aufrufbar), nicht mit der normalen Quelltextanzeige oder gar der HTML-Datei selbst. Dynamisch von Javascript erstellte Elemente sind da nicht zu sehen.

      ciao

      das war der richtige Tip ... es lag an so einer App um Webseiten sofort zu übersetzen .. wollte ich mal einbinden, war aber leider noch im Browser installiert. Ich habe die App nun deinstalliert, deshalb lief es auf einem anderen Rechner "normal" (zwischezeitlich festgestellt ;-) Jetzt alles wieder save ... trotzdem Danke ... nur die Diskussion brachte die Idee/Erfolg.

      Zum Schluß noch ... ist der 5 Zeiler optimierungsfähig ??

      Gruß piet

      1. Zum Schluß noch ... ist der 5 Zeiler optimierungsfähig ??

        $(document.body).find('*[id]').map(function() { return this.id; }).get();
        

        ;-)

        1. Servus Mitleser,

          $(document.body).find('*[id]').map(function() { return this.id; }).get();
          

          Vergiss nicht, den ganze Batzen jQuery zu erwähnen, der da mit dranhängt. Wobei ich kaum noch Seiten kenne, die das nicht eingebunden haben.

          ciao

          edit: Ironie nicht erkennen ist eine meiner großen Stärken.

          --
          "Lohnt es sich, die Menschen zu retten? So wie ich die Sache sehe, ist die Intelligenz bereits ausgerottet und es leben nur noch die Idioten."
        2. Hallo Mitleser,

          $(document.body).find('*[id]').map(function() { return this.id; }).get();
          
          $('body [id]').map(function() { return this.id; }).get();
          

          oder, wenn im head oder im html-Tag keine IDs zu erwarten sind, sogar noch kürzer:

          $('[id]').map(function() { return this.id; }).get();
          

          ;-)

          LG,
          CK

      2. Tach,

        Zum Schluß noch ... ist der 5 Zeiler optimierungsfähig ??

        ich würde mich eher fragen, ob er überhaupt nötig ist bzw. wofür und würde letzteres dann vermutlich anders lösen.

        mfg
        Woodfighter

  2. Hi,

    ich suche meine Seite mit einem Javascript nach allen id's ab die als String zurückgegeben werden.

    ich kann mir zwar nicht vorstellen, wofür das gut sein soll, aber bitte ...

    Heute beim testen sehe ich das id's zurückkommen die gar nicht auf der Seite vorhanden sind. (Quelltext im Browser)

    Quelltextansicht oder DOM-Ansicht? Es können ja auch IDs von Elementen sein, die dynamisch mit JS ins Dokument eingefügt werden. Die sind in der Quelltextansicht natürlich nicht vertreten.

    Die "nichtvorhanden" id lauten ... unter anderem SL_Ghelp, SL_dots2, SL_Gfeedback, SL_dots1, SL_tts, SL_font ..... die ersten beiden Buchstaben sind immer SL

    Bist du sicher, dass dein Server nicht gehackt wurde? Bindest du eventuell Werbung aus dubiosen Quellen ein? Hast du eventuell Javascripts eingebunden, denen man nicht unbedingt trauen möchte?

    Wenn ich Google nach SL_Ghelp und SL_Gfeedback frage, bekomme ich eine verdächtige Menge Treffer in Russisch, mit denen ich nicht wirklich etwas anfangen kann. Aber das würde mich zumindest verunsichern.

    So long,
     Martin