2010-09-08 10 views
1

Je veux enregistrer un jquery-script dynamiquement sur une page maître, mais ça ne marche pas, quelqu'un peut-il m'aider?enregistrement jquery dynamiquement ne fonctionne pas

J'ai obtenu le script dans un dossier Matériaux/scripts à partir de la racine de mon application web, et ma page principale ressemble

public partial class Application : System.Web.UI.MasterPage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     ScriptManager.RegisterClientScriptInclude(this, this.GetType(), "jquery", 
      VirtualPathUtility.ToAbsolute("~/Materials/Scripts/jquery-1.4.2.min.js")); 
    }  
} 

Mais cela ne fonctionne jamais. En utilisant

<script src="../../Materials/Scripts/jquery-1.4.2.min.js" type="text/javascript"></script> 

fonctionne bien.

+1

Je suis curieux de savoir pourquoi vous essayez d'enregistrer dynamiquement. Essayez-vous de charger et de décharger des scripts client en fonction de la page visitée par les internautes? Ou y a-t-il une autre raison de faire cela? – JasCav

+0

@Jas - car les chemins relatifs ne sont pas gérés correctement dans les pages maîtres des fichiers de script. –

+0

bonne question. Je pense que, dans mon projet, je n'ai pas vraiment besoin de le faire, mais j'ai vu cette méthode dans un projet différent de notre, et en général, je pense que vous avez plus de contrôle sur les scripts. – AGuyCalledGerald

Répondre

1

Lorsque vous utilisez le ScriptManager d'ajouter une référence de script, il ajoute la balise SCRIPT à la BODY de la page HTML au lieu de la section HEAD. Si vous avez un code jquery s'exécutant sur $(document).ready() cela ne fonctionnera pas, car jQuery n'est pas encore chargé.

Affichez le code HTML généré par la page aspx et identifiez l'emplacement de votre code jQuery et l'emplacement de la balise <script> référencée jQuery. Une façon de contourner ce problème est d'ajouter votre javascript en bas du document au lieu du HEAD.

Une autre option, si vous voulez garder votre code dans le HEAD, est d'utiliser window.onload au lieu de $(document).ready() par exemple:

window.onload = function() { 
... your jquery code here 
} 
+0

Ups, l'enregistrement dynamique du script fonctionne réellement, mais pas sur le Master-Page. une erreur JS si j'essaie d'y exécuter un script Le script est dans le corps de la page. – AGuyCalledGerald