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?
Était-ce utile?

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:

  1. Sys.Application.initialize() commence la partie initialize() du cycle de vie. Voici pageLoad tous les contrôles AJAX côté client, après quoi ils sont prêts à être utilisés par programme
  2. Sys.Application.add_load() commence la window.onload partie du cycle de vie en appelant tous les gestionnaires ayant souscrit à cet événement
  3. 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top