Comme vous utilisez asp.net, il est logique de faire le côté serveur de contrôle que ce sera où vous choisissez d'ajouter la référence au fichier javascript. À partir de votre fichier .ascx, vous pouvez enregistrer ce qui suit:
this.Page.ClientScript.RegisterClientScriptInclude("GlobalUnqiueKey", UrlOfJavascriptFile);
... à partir de votre page que vous appelez simplement l'objet ClientScript directement:
ClientScript.RegisterClientScriptInclude("GlobalUnqiueKey", UrlOfJavascriptFile);
Le 'GlobalUniqueKey' peut être une chaîne (I utilisez l'url du fichier javascript pour cela aussi)
Si vous essayez d'enregistrer un script avec la même chaîne de clé, cela ne fait rien. Donc, si vous appelez ceci dans votre page, votre contrôle ou n'importe où ailleurs, vous finirez avec une seule référence dans votre page. L'avantage de ceci est que vous pouvez avoir plusieurs instances d'un contrôle sur une page et même si elles essaient toutes d'enregistrer le même script, cela ne se fait jamais qu'une fois au maximum. Et aucun d'eux ne doit s'inquiéter du fait que le script soit déjà enregistré. Il existe une méthode 'IsClientScriptIncludeRegistered (stringkey)' que vous pouvez utiliser pour voir si un script a déjà été inclus sous cette clé mais il semble assez redondant de faire cette vérification avant de vous inscrire car plusieurs tentatives d'enregistrement ne lancent pas d'exceptions ou provoquer d'autres erreurs. Faire le contrôle côté client signifie que, en supposant que les multiples références javascript sont mises en cache par le navigateur (elles ne le sont peut-être pas), vous avez toujours plusieurs balises et l'en-tête de chacune provoquant l'exécution de javascript. Si vous aviez 20 instances de votre contrôle sur une page, vous pourriez avoir des problèmes sérieux.
y at-il une raison pour laquelle vous ne pouvez pas inclure la bibliothèque javascript dans toutes les pages – jfar
jfar, j'ai des sites qui ne jamais besoin d'un fichier javascript sur? une page particulière quand je montre un contrôle particulier, la plupart du temps ce contrôle ne sera pas utilisé du tout sur cette page.Il serait inutile d'inclure javascript pour être servi à chaque utilisateur qui est allé à chaque page sur le site, surtout si leur frère wser a insisté pour demander le fichier sur chaque requête. –
La raison pour laquelle je ne veux pas l'inclure dans toutes les pages est la performance: je n'en ai pas besoin dans chacun d'entre eux. Neil, merci d'avoir expliqué. – Shimmy