Quelle est la différence entre ASP.NET AJAX pageLoad () et JavaScript window.onload?
-
03-07-2019 - |
Question
Je travaille avec ASP.NET AJAX et souhaite comprendre la différence entre ces deux extraits:
function pageLoad(sender, eventArgs) { }
et
window.onload = function() { }
- Est-ce qu'ils agissent de la même manière?
- Ou l'un s'appelle-t-il avant l'autre?
- Ou sera-t-il appelé automatiquement et l'autre pas?
La solution
Quelques points à noter en premier. MS a inventé une sorte d'objet & Quot; runtime côté client & Quot; appelé Sys.Application
. Il gère les événements de levée init
, load
et unload
tout au long de la vie de la page [côté client], comme suit:
-
Sys.Application.initialize()
commence la partieinitialize()
du cycle de vie. VoicipageLoad
tous les contrôles AJAX côté client, après quoi ils sont prêts à être utilisés par programme -
Sys.Application.add_load()
commence lawindow.onload
partie du cycle de vie en appelant tous les gestionnaires ayant souscrit à cet événement - Enfin, il appelle la fonction globale
onload
(si elle est définie)
Les étapes 2) et 3) sont répétées pour chaque publication partielle (c'est-à-dire AJAX + UpdatePanel).
Pour finir, la réponse : "pageLoad"
n'est qu'un simple raccourci vers </form>
.
En ce qui concerne sa relation avec <=> cependant, les choses commencent à devenir intéressantes. Pour l’essentiel, MS devait <=> ne déclencher que une fois la <=> phase terminée. Mais vous ne pouvez pas contrôler le moment où le navigateur se déclenchera <=>, car il est lié au & Contenu chargé & "; ". C’est ce que l’on appelle & "; Le <=> problème &"; :
L'événement onload se déclenche après toutes les pages le contenu a été chargé (y compris les images et autre contenu binaire). Si ton page comprend beaucoup d'images alors vous peut voir un décalage notable avant la la page devient active.
Alors, ils viennent d'inventer leur propre & "Spécial &"; fonction pour déclencher au bon moment dans leur cycle de vie d’événement et l’a appelé <=>. Et le truc qu’ils utilisaient pour lancer ce cycle de vie d’événement personnalisé était de placer l’appel à <=> juste avant la balise <=> de fermeture . C'est ce que fait le serveur d'exécution. Les lecteurs avisés remarqueront que cette astuce a permis à MS de résoudre le problème <=>, car tout code que vous avez entré dans <=> sera déclenché indépendamment du contenu binaire ( w / une capture rare pour IE ).
> Agissent-ils de la même manière?
Sur le plan conceptuel, oui, pas du tout en raison du dit <=> problème. La seule règle est que vous devez placer le code qui interagit avec vos contrôles AJAX dans <=> seulement, car <=> suit sa propre trajectoire d'événement.
> Ou est-ce qu'on appelle l'un avant l'autre?
Ils sont complètement indépendants à 100%.
> Ou l’un sera-t-il appelé automatiquement et l’autre pas?
Ils seront tous les deux appelés si vous les avez définis.