webForumDet fria alternativet

Dubbla window.onload

JavaScript

6 svar · 453 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Tjena
Jag har en meny i DHTML, en modifierad Version av Jojoxx DOM Meny 2.
Den använder window.onload=function(){ initMenu(); } längst ner i JS filen, som infogas m.h.a den vanliga <script> taggen.

Nu har jag försökt implementera ett annat DHTML script, för att visa / dölja divar.

Detta script använder window.onload för att det ska funka och där får jag problem.
Antingen funkar inte menyn som den ska, eller så funkar inte det sistnämnda scriptet.
Jag har testat flera olika saker som att köra onload-raderna efter varandra, kombinerat dessa till en rad osv. men utan att lyckas.

Alla förslag tages tacksamt emot!

Medlem sedan mars 20041 505 inlägg
#2

Det finns många vettiga framework som löser detta åt dig.
Här är en lösnig som är mycket enkel att installera:
http://www.robertnyman.com/domassistant/modules-domassistant-load.htm

Medlem sedan feb. 20034 441 inlägg
#3

Hmm, det där ser vettigt ut, men jag är inte riktigt med på hur jag ska få det att funka.
Det här har jag mellan <head> taggarna:

<script type="text/javascript" src="css/menu.js"></script>
<script type="text/javascript" src="css/dhtml_showhide.js"></script>
<script type="text/javascript" src="css/domass/DOMAssistant.js"></script>
<script type="text/javascript" src="css/domass/DOMAssistantLoad.js"></script>

I filen DOMAssistantLoad.js har jag lagt in:

DOMAssistant.functionsToCall = [
	/*
		functionName // name of function
		"functionName()" // name of function with parentheses and optional arguments
	*/
	"initMenu()"
	initShowHideDivs
];

I filerna ska det i normala fall se ut såhär:
menu.js:
window.onload=function(){ initMenu(); }

dhtml_showhide.js:
window.onload = initShowHideDivs;

Jag är inte riktigt med på hur jag ska lösa det här, vore bra med lite hjälp på traven.

Tack!

Medlem sedan mars 20041 505 inlägg
#4

Såhär ska man nog anropa det hela i DOMAssistantLoad.js:

DOMAssistant.functionsToCall = [
	"initMenu()", "initShowHideDivs()"
];

Men vid närmare eftertanke går det att lösa allt utan externa filer såhär:

window.onload = function() {
	initMenu();
	initShowHideDivs();
}

Men finessen med DOMAssistantLoad är att den är blixtsnabb eftersom den kör funktionerna direkt när själva koden har laddat, så man slipper vänta på bilder och annat som tar extra tid.

Medlem sedan feb. 20034 441 inlägg
#5

Troxy skrev:

Men vid närmare eftertanke går det att lösa allt utan externa filer såhär:

window.onload = function() {
	initMenu();
	initShowHideDivs();
}

Yes, funkar fint, tack!

Men, innan jag postade här, testade jag med:

window.onload = function() {	initMenu; initShowHideDivs;}

Det funkade inte, beror det på att jag inte hade med "()"?

Medlem sedan mars 20041 505 inlägg
#6

Varje gång man kör en funktion så måste man anropa den med paranteser för argumentens skull.
Men om man refererar till en funktion så används inte paranteser.

Medlem sedan feb. 20034 441 inlägg
#7

Aha, såpass.
Tack för hjälpen!

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)