Повикване на няколко прозореца Onload функции в JavaScript
, Ерес друго малко peice, на измама Javascript, че аз трябваше да копаем наоколо, защото ситуацията го commaned. В един от моите уеб сайтове, имах тази ситуация, в която трябваше да въведе "windows.onload" два пъти. Първото нещо, че ще дойде да неопитен ум като моя (аз трябва да кажа честно, че, тъй като имам използвате JavaScript рамки и библиотеки, съм Забравена да го прости неща, на моя ... тъжно, но е истина), е следният метод ...
window.onload = onloadfn1; window.onload = onloadfn2; window.onload = onloadfn3; и т.н. ..
Съжалявам да кажа, но това няма да работят ... не искам да обсъдят науката изпълнението на Javascript много ... но в съответствие с неотдавнашното ми опит, само последната функция (onloadfn3) ще лошо всъщност се изпълнява.
В нормални ситуации, за разлика от моя (което аз ще говоря за малко по-късно) ... бихте могли да направите едно от следните да изпълни mutliple функции onload ....
Или нещо такова
на функция doOnLoad () { onloadfn1 (); onloadfn2 (); onloadfn3 (); } window.onload = doOnLoad;
За сегашното ми положение не може да използвате някоя от по-горе ...
Защо имам нужда да се обадя windows.onload два пъти, а, че призовава две функции в рамките на една функция onload? Ето бърз поглед на моя проблем изявление ...
"Моят сайт" страници са структурирани като Wordpress Тема .... т.е. налице е обща header.php и Footer.php, който да се включва във всички страници на сайта. Налице е едно implementaion onload функция в Footer.php, да се направят някои общи функции onload. И има няколко страници, които се нуждаят от нещо на собствената си ONLOAD, освен тези, направено от общата функция onload. Ако аз зададете функция за обратно извикване директно към window.onload манипулатор, ще свръх-вози на вече възложени извика в Footer.php "
.... Е мой проблем разбира
?
Е! има няколко решения, че съм откри. Те всички са много сходни и най-вече implementions на решение, дадено от за Саймън Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...
Решение:
Просто добавете този код на JavaScript на сайта ...
за функция addLoadEvent (функции) { VAR oldonload = window.onload; ако (window.onload Вид на! = 'функция ") { window.onload = функции } Друго { window.onload = функция () { ако (oldonload) { oldonload () } функция () } } }И да го наречем, вместо на обичайните "windows.onload"
addLoadEvent (FunctionToRunOnPageLoad); addLoadEvent (функция () { / * Повече код, за да се движат по зареждане на страницата * });
Предимства на този код фрагмент ...
1. На първо място, това ви позволява да имате няколко събития windows.onload, наречен от отделни части от кода си, без overridding предходната дефиниция
2. Това наистина е ненатрапчив. Това могат да бъдат поставени във файл с други скриптове или в отделен файл.
3. Тя работи дори ако window.onload вече е определена.










































