Antworten auf deine Fragen:
Neues Thema erstellen

window.onload zündet zu früh

Rum0

PSler

Hallo psd-tutorials.de,
window.onload zündet i-wie zu früh. Und zwar bevor das DOM komplett geladen ist.
Deswegen gibt:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Hallo</title>
<style type="text/css"></style>
<script type="text/javascript">
function haveatry()
{
    var allElems = document.getElementsByTagName('SPAN');
    document.write(allElems.length);
}
window.onload = haveatry();
</script>
</head>
<body>
<a href="#"><span class='si'>AL</span></a>
<script type="text/javascript">haveatry();</script>
</body>
</html>
auch 0 1 zurück. Leider.
Live ansehen könnt ihr euch das .
Das ganze ist für ein Greasemonkey Script gedacht, deswegen kann ich das auch nicht wie oben lösen.
Aber darum geht es ja gar nicht. Sondern darum, dass window.onload eigentlich erst zünden dürfte, wenn das dom komplett geladen ist.
Zielkandidat ist FireFox, deswegen habe ich es auch nur dort getestet.
Hoffe, ihr könnt mir helfen.

Rum0
 

Rum0

PSler

AW: window.onload zündet zu früh

Ich hab k. A. warum, aber es klappt. Jeden Falls bis jetzt.
Was mich halt verwundert, weil die Funktion ja vorher auch aufgerufen wurde. aber durch den Syntax Fehler dann höchstwahrscheinlich bevor window.onload gezündet hat.
Danke sehr.

Rum0

EDIT:
Noch eine Nachfrage zum gleichen Skript aber mit anderem Thema.
HTML:
function haveatry()
{
    var allElems = document.getElementsByTagName('SPAN');
    for (var i = 0; i < allElems.length; i++) {
        var thisElem = allElems[i];
        if(thisElem.className && thisElem.className == 'si' && thisElem.innerHTML == 'AL')
        {
            thisElem.parentNode.click();
            alert(thisElem.parentNode);
        }
    }
}
Gibt es ein Äquilvalent dafür, dass click() auch in FF funktioniert. So funktioniert das zwar in IE und in Opera, aber nicht in FF.
Okay, habe auch das hingekriegt. Und zwar indem ich einfach die Funtion die in onClocker="" definiert ist aufgerufen habe, und als Parameter anstatt this halt thisElem.parentNode. Danke für deine Hilfe. Rum0
 
Zuletzt bearbeitet:
D

derkk_koenig

Guest

AW: window.onload zündet zu früh

HTML:
function haveatry()
{
    var allElems = document.getElementsByTagName('SPAN');
    for (var i = 0; i < allElems.length; i++) {
        var thisElem = allElems[i];
        if(thisElem.className && thisElem.className == 'si'  && thisElem.innerHTML == 'AL')
        {
            thisElem.parentNode.click();
            alert(thisElem.parentNode);
        }
    }
}

Mal eine Anregung:
Hast du mal an jQuery (oder andere derartige Frameworks) gedacht?

Wenn die funktion nicht das einzige JS ist, was zu einbinden willst, könnte das deinen Code ziemlich verkürzen (mit dem Nachteil, das Framework in seiner ganzen Größe einbinden zu müssen, aktuell 24kb). Ich finde das einfacher als mich mit 'getElementByTagNAme' in richtiger groß-/kleinschreibung rumzuärgern...

sinngemäß:
HTML:
$('span.si').each(
function(){
 if ($(this).html('AL'))
{
  $(this).parent().click(function(){alert($(this).parent())});
}
}
);

Alle Funktionen: api.jquery.com

Vg

der kk_koenig
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.640
Beiträge
1.538.508
Mitglieder
67.557
Neuestes Mitglied
azmostbethaot
Oben