HighDots Forums  

Re: Expertencheck: BODY-onload ergänzen

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss Re: Expertencheck: BODY-onload ergänzen in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Martin Honnen
 
Posts: n/a

Default Re: Expertencheck: BODY-onload ergänzen - 10-19-2006 , 07:36 AM






Thorsten.Duhn (AT) editorial (DOT) de wrote:

Quote:
function addOnload(onloadFunc) {
// based on http://answers.google.com/answers/threadview?id=510976
if(this.addEventListener) {
this.addEventListener("load", onloadFunc, false);
} else if(this.attachEvent) {
this.attachEvent("onload", onloadFunc);
} else {
var onloadOld = this.onload;
this.onload = function() { onloadOld(); onloadFunc(); }
}
}
addOnload(function() { alert('FUNC'); });

Statt |this| sollte man eher |window| verwenden, denn |this| kann je
nach Ort des Aufrufes von addOnload auch etwas anderes als window sein.
Dann kann es (zumindest generell) passieren, das <body onload> nicht
gesetzt ist, so dass bei deinem Ansatz dann onloadOld auf null gesetzt
wird, aber trotzdem versucht wird, onloadOld() aufzurufen. Ein Check
if (onloadOld) { onloadOld(); }
sollte helfen:

function addOnload(onloadFunc) {
// based on http://answers.google.com/answers/threadview?id=510976
if(window.addEventListener) {
window.addEventListener("load", onloadFunc, false);
} else if(this.attachEvent) {
window.attachEvent("onload", onloadFunc);
} else {
var onloadOld = window.onload;
window.onload = function() {
if (onloadOld) {
onloadOld();
}
onloadFunc();
};
}
}

--

Martin Honnen
http://JavaScript.FAQTs.com/


Reply With Quote
  #2  
Old   
Thorsten Duhn
 
Posts: n/a

Default Re: Expertencheck: BODY-onload ergänzen - 10-19-2006 , 12:47 PM






Hallo,

Quote:
Statt |this| sollte man eher |window| verwenden, denn |this|
kann je nach Ort des Aufrufes von addOnload auch etwas anderes
als window sein.
hört sich nachvollziehbar an. Ich habe mich wohl zu sehr an
der Quelle, bzw. am dort genannten Test orientiert:
http://odin.himinbi.org/tests/test_document_load.html
Darin kommt immer nur |this| und |document| vor, und mit
letzterem bin ich nicht voran gekommen. Scheuklappen ;-)

Quote:
Dann kann es (zumindest generell) passieren, das <body onload
nicht gesetzt ist, so dass bei deinem Ansatz dann onloadOld
auf null gesetzt wird, aber trotzdem versucht wird, onloadOld()
aufzurufen. Ein Check
if (onloadOld) { onloadOld(); }
sollte helfen:
Danke, genau in den Lapsus bin ich direkt vor Lesen dieses
Postings gelaufen ;-)

Beste Grüße,
Thorsten
--
connect thorsten.duhn (AT) editorial (DOT) de
load http://www.editorial.de
load http://www.freewareguide.de
system failure:> abort, retry, fail?_


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.