Javascript function beim Laden ausführen
Werner
- javascript
0 Ashura0 Werner0 Ashura0 Benjamin Wilfing0 Der Martin0 Tom0 Ashura
0 Jeena Paradies
Hallo!
Ich möchte gerne eine Javascript function beim Laden meiner Seite ausführen.
Alles was ich bisher versucht habe, klappte nicht.
Vielleicht liegt es daran, dass ich php-tags in der function habe?
Kann mir einer helfen?
Vielen Dank
Werner
Hallo Werner.
Ich möchte gerne eine Javascript function beim Laden meiner Seite ausführen.
Alles was ich bisher versucht habe, klappte nicht.
Und was hast du bisher versucht?
Vielleicht liegt es daran, dass ich php-tags in der function habe?
Die sind für JavaScript ohne Belang, da von PHP nichts mehr zu sehen ist, wenn JavaScript zum Zuge kommt.
Einen schönen Samstag noch.
Gruß, Ashura
Hallo Ashura!
Ich habe bis jetzt window.open und function start() probiert.
Aber vielleicht hab ich des auch falsch angewendet.
Wie benutzt man die Tags richtig?
Gruß Werner
Hallo Werner.
Ich habe bis jetzt window.open und function start() probiert.
Und welches dieser beiden würdest du mit „beim Laden“ in Verbindung bringen? Ich keines von beiden.
Also tun wir nun was? Richtig, wir versuchen, in SELFHTML fündig zu werden.
Es geht um JavaScript, also rufen wir auch dieses Kapitel auf. *click*
Einführung interessiert uns nicht, also schauen wir einmal bei den Sprachelementen hinein. *click*
Hm … „Event“ heißt „Ereigniss“. Das Laden einer Seite ist doch ein Ereigniss, oder? Dann gehen wir einmal dort hin. *click*
Ah, da ist es ja: „onload (beim Laden einer Datei)“
Wie benutzt man die Tags richtig?
Welche Tags?
Einen schönen Samstag noch.
Gruß, Ashura
Hi Ashura,
„Event“ heißt „Ereigniss“.
was?
Das Laden einer Seite ist doch ein Ereigniss, oder?
Ein wass?
Naja, also vielleicht gehe ich dem einen oder anderen ja auf den Sender, wenn ich hier immer mit meiner Rechtschreibungs-Besserwisserei ankomme, aber das tut mir auch wirklich jedesmal im Auge weh. Die meisten Wörter, die auf -nis enden und mir bekannt sind, tun das nun mal bloß mit einem einzigen „s“ und kriegen das zusätzliche erst im Plural...
Viele Grüße
Ben*scnr*jamin
Hi Ingrid,
die fehlenden Zitatzeichen möge sich bitte jeder dazudenken. Soviel dann zu meiner eigenen Blödheit... ;-)
Viele Grüße
Benjamin
Hallo Benjamin.
Das Laden einer Seite ist doch ein Ereigniss, oder?
Ein wass?
Autsch.
Naja, also vielleicht gehe ich dem einen oder anderen ja auf den Sender, wenn ich hier immer mit meiner Rechtschreibungs-Besserwisserei ankomme, aber das tut mir auch wirklich jedesmal im Auge weh.
Ich kann dich verstehen, mir geht es oft ebenso.
Die meisten Wörter, die auf -nis enden und mir bekannt sind, tun das nun mal bloß mit einem einzigen „s“ und kriegen das zusätzliche erst im Plural...
Berechtigter Hinweis.
In diesem Sinne finde ich die Rechtschreibreform wieder inkonsequent. Ich spreche besagte Wörter ja schließlich mit einem kurzen Vokal aus, also müsste man folgerichtig vermuten dürfen, dass der darauf folgende Konsonant verdoppelt wird. (Siehe „dass“, „muss“, ect.)
Aber - Pustekuchen!
Ob Fipptehler oder freudscher Fehler, es war ein Fehler. Danke für die Korrektur.
Einen schönen Samstag noch.
Gruß, Ashura
Hallo Ashura,
Hm … „Event“ heißt „Ereigniss“. Das Laden einer Seite ist doch ein Ereigniss, oder?
Nein, Event heißt nicht "Ereigniss", und das Laden einer Seite ist auch kein solches.
In gewissem Sinn ist es aber ein _Ereignis_.
Wie benutzt man die Tags richtig?
Welche Tags?
Gute Frage. Nächste Frage? ;-)
Beim Lesen der beiden Postings von Werner war ich mir außerdem *wirklich* unsicher, ob das eine ernstgemeinte Frage oder ein weiterer Aprilscherz sein möchte.
Sorry, Werner, falls ich dir Unrecht tue, aber an einem solchen Tag ist man gegenüber allem skeptisch, was nur im entferntesten merkwürdig aussieht.
Schönen Abend noch,
Martin
Hello,
ja: „onload (beim Laden einer Datei)“
onload ist aber kein Trigger für "beim Laden", sondern für "nach dem Laden".
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo Tom.
ja: „onload (beim Laden einer Datei)“
onload ist aber kein Trigger für "beim Laden", sondern für "nach dem Laden".
Das Missverständnis dürfte aus der Übersetzung „on load“ → „beim Laden“ herrühren.
Genau genommen hast du natürlich Recht.
Einen schönen Samstag noch.
Gruß, Ashura
Hallo,
Ich nutze ja schon länger addLoadEvent() da kann man auch gleich mehrere funktionen damit aufrufen, das ist nett.
Grüße
Jeena Paradies
Hallo Jeena.
Ich nutze ja schon länger addLoadEvent() da kann man auch gleich mehrere funktionen damit aufrufen, das ist nett.
Ich favorisiere seit Längerem addEventListener, wenn ich weiß, dass ggf. mehrere Methoden gleichzeitig initialisiert werden müssen.
Einen schönen Samstag noch.
Gruß, Ashura
Hallo,
Ich favorisiere seit Längerem addEventListener, wenn ich weiß, dass ggf. mehrere Methoden gleichzeitig initialisiert werden müssen.
Interessant, nur kappiere ich nicht wirklich wie man das anwenden soll, hast du da mal ein kurzes Beispiel?
Grüße
Jeena Paradies
Hallo Jeena.
[ addEventListener ]
Interessant, nur kappiere ich nicht wirklich wie man das anwenden soll, hast du da mal ein kurzes Beispiel?
Ich war eigentlich der festen Überzeugung, dass dir dieses bereits bekannt sei. Sei's drum, hier einmal ein Beispiel:
function foo() {
alert('/me has been loaded.');
}
window.addEventListener('load', foo, false);
Oder wie gewohnt alternativ:
window.addEventListener('load', function() {
alert('/me has been loaded., too.');
}, false);
Das Problem hierbei stellt (wie so oft) der IE dar; er kennt diese Methode nicht, dafür aber die proprietäre attachEvent-Methode.
Hier muss also per Abfrage leider wieder unterschieden werden:
if (window.addEventListener) {
window.addEventListener('load', foo, false);
} else if (window.attachEvent) {
window.attachEvent('onload', foo);
}
Und selbst dieses unterstützt der IE im Übrigen erst ab Version 5.5.
Einen schönen Sonntag noch.
Gruß, Ashura
[ addEventListener ]
Interessant, nur kappiere ich nicht wirklich wie man das anwenden soll, hast du da mal ein kurzes Beispiel?
und hier eine lange, lange Diskussion, wie man die zwei (bzw. drei) Methoden richtig einsetzen könnte http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html
Struppi.
Hallo Struppi.
und hier eine lange, lange Diskussion, wie man die zwei (bzw. drei) Methoden richtig einsetzen könnte http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html
Ah, sehr gut. Kombiniert ergibt dies nun also Folgendes:
function addEvent(obj, type, fn) {
if (obj.addEventListener) {
obj.addEventListener(type, fn, false);
} else if (obj.attachEvent) {
var eProp = type + fn;
obj['e' + eProp] = fn;
obj[eProp] = function() {
obj['e' + eProp](window.event);
};
obj.attachEvent('on' + type, obj[eProp]);
} else {
var oLoad = obj['on' + type];
if (typeof(obj['on' + type]) != 'function') {
obj['on' + type] = fn;
} else {
obj['on' + type] = function() {
oLoad();
fn();
}
}
}
}
Dies funktioniert nun offenbar sogar im IE 5.0.
Einen schönen Sonntag noch.
Gruß, Ashura
Hallo,
var eProp = type + fn;
obj['e' + eProp] = fn;
obj[eProp] = function() {
obj'e' + eProp;
};
obj.attachEvent('on' + type, obj[eProp]);
Dieses Gefummel mit Function.prototype.toString() als Hash ist nur nötig, weil IE 5 kein Function.prototyp.apply() versteht.
Sprich, wenn du IE 5 sowieso mit dieser Methode abspeist:
var oLoad = obj['on' + type];
if (typeof(obj['on' + type]) != 'function') {
obj['on' + type] = fn;
} else {
obj['on' + type] = function() {
oLoad();
fn();
}
}
...dann kannst du für IE > 5.0 auch gleich apply() verwenden. Die Frickelei mit apply() bzw. mit obj[type + fn] = function () { obj'e' + type + fn; }; macht man nur, damit man mit this auf das Element zugreifen kann, dessen Event-Handler gerade gefeuert wird. Denn der IE kennt die DOM-Events-Eigenschaft currentTarget nicht, this hat aber denselben Effekt.
Die Event-Eigenschaften target (IE: srcElement) verweist auf das Element, bei dem das Ereignis tatsächlich passierte, currentTarget (IE: this) hingegen auf das Element, dessen Handler das Ereignis gerade. Meistens interessiert einen nur target/srcElement. currentTarget/this braucht man, wenn man in Erfahrung bringen will, ob das Element, dessen Handler gefeuert wurde, auch das Ziel des Elements ist. Wenn das der Fall ist, stimmen target/srcElement und currentTarget/this überein. In dem Fall befindet sich der Event in der Target-Phase, andernfalls in der Capturing- oder Bubbling-Phase (im IE gibt es nur die Target- und die Bubbling-Phase). Aufsteigende Events will man meistens nicht verarbeiten, da sie meist schon in Target-Phase verarbeitet wurden.
Gut, mir fällt jetzt auch kein Praxisbeispiel ein, bei dem es unbedingt nötig ist, auf currentTarget/this zuzugreifen, um sie mit target/srcElement zu vergleichen. Meistens nutzt man das Feature des Bubblings gar nicht und registriert Handler so, dass sie sich nicht in die Quere kommen, also jeder Event nur genau einen Handler auslöst. (Genauer gesagt, Bubbling benutzt man eigentlich gerade dazu, um die aufsteigenden Events verschiedener Kindelemente zu verarbeiten, damit man nicht dutzende Handler bei den einzelnen Kindelementen registrieren muss. Dann ist der Zugriff auf target/srcElement notwendig, aber nicht auf currentTarget/this.) Man bräuchte verschachtelte Elemente mit Handlern für denselben Event-Typ, damit es überhaupt dazu kommt, dass ein Event zwei Handler auslösen kann. Und das ist meist gewollt.
Sprich, für die meisten einfachen Event-Handling-Aufgaben reichen einfache addEvent-Funktionen aus. Wenn man this nicht braucht, braucht man auch keine Bastelei mit apply() oder Closures.
Mathias
hi,
Und selbst dieses unterstützt der IE im Übrigen erst ab Version 5.5.
Sicher?
Also ich meine, dass auch schon im IE 5.01/WinNT erfolgreich probiert zu haben (nativ, kein "emulierter" IE).
Und auf der von dir verlinkten Seite beschreibt Microsoft die Methode auch als unter Windows ab 5er-IEs verfügbar, lediglich für Windows CE wird explizit von IE 5.5 geschrieben.
gruß,
wahsaga
Hallo wahsaga.
Und selbst dieses unterstützt der IE im Übrigen erst ab Version 5.5.
Sicher?
Ja, ich habe es überprüft.
Also ich meine, dass auch schon im IE 5.01/WinNT erfolgreich probiert zu haben (nativ, kein "emulierter" IE).
Ich habe es mit dem IE 5.01 unter Debian GNU/Linux mit Hilfe von WINE probiert, also auch kein emulierter IE.
Und auf der von dir verlinkten Seite beschreibt Microsoft die Methode auch als unter Windows ab 5er-IEs verfügbar, lediglich für Windows CE wird explizit von IE 5.5 geschrieben.
Die Beschreibung habe ich auch gesehen, aber mich lieber auf die Tatsachen gestützt.
Einen schönen Sonntag noch.
Gruß, Ashura