Вызов нескольких OnLoad для Windows функции в Javascript
Херес еще один маленький peice обмана Javascript, что мне пришлось копаться, потому что ситуация commaned он. В одном из моих веб-сайтов, у меня была ситуация, когда я должен был осуществлять "windows.onload" в два раза. Первое, что бы пришли к неопытный ум, как у меня (у меня честно сказать, что, поскольку я использую JavaScript рамки и библиотеки, я forgotton делать простые вещи, на мой собственный ... Печально, но факт), является следующий метод ...
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 (функции) { уаг oldonload = window.onload; если (TypeOf window.onload! = 'функция') { window.onload = функция {} Другое window.onload = функция () { если (oldonload) { oldonload () } функции () } } }И называть его вместо обычного "windows.onload"
addLoadEvent (FunctionToRunOnPageLoad); addLoadEvent (функция () { / * Больше кода, чтобы запустить на странице загрузки * });
Преимущества этот фрагмент кода ...
1. В первую очередь, это позволяет иметь несколько событий windows.onload, вызывается из отдельных частей кода, без overridding предыдущее определение
2. Это очень ненавязчиво. Это может быть помещен в файл с другими сценариями, либо в отдельном файле.
3. Это работает, даже если window.onload уже установлен.










































