2010-09-14 5 views
11

Je travaille avec une équipe externe sur notre site web et ils ont récemment ajouté un de mes scripts au .NET MasterPage du site ... enfin, il a finalement fait fonctionner mon script mais maintenant ... il charge des bannières sur ' chaque page sur le site.Comment lancer le script jquery si la page html est la page d'accueil ...?

Comment puis-je écrire une instruction 'if' qui dit essentiellement ... si c'est la page d'accueil ... exécutez ce script ... sinon, ne le faites pas ...?

+3

Le point d'un gabarit ne doit-il pas inclure les données dans chaque page? Cela sonne horriblement comme "Docteur! Docteur! Ça fait mal quand je tire le pistolet à mon pied!" – Quentin

+2

Je ne sais pas à quel point c'était utile, mais c'était marrant ...! – chrisb

+0

L'implication est "Mettez le'

0

Vous ne devriez pas, mais vous pourriez probablement faire quelque chose comme ceci:

if(window.location.pathname == "{home page}") 
{ 
    //run home page jquery. 
} 

MAIS ... mon conseil serait de créer une section de contenu sur la page d'accueil qui obtient placé dans la tête et placez le jQuery au lieu de la masterpage. Aucune raison de l'inclure dans la page maître si elle n'est pas utilisée partout ...

6

Que diriez-vous d'un script Content Placez le support qui est à l'intérieur du <head> de la page MasterPage, puis placez le contenu dans l'espace réservé depuis votre page d'accueil.

Fondamentalement ..

Dans votre page maître

<head> 
<title>hello</title> etc... 
// add jQuery here 

<asp:ContentPlaceHolder ID="jQueryCode" runat="server"></asp:ContentPlaceHolder> 

Et puis dans votre page d'accueil

<asp:Content ContentPlaceHolderId="jQueryCode" runat="server"> 
    // run jQuery script here 
</asp:Content> 

Aussi - si vous n'utilisez pas jQuery sur les autres pages, vous pouvez le supprimer de la MasterPage et l'ajouter juste au-dessus de votre script dans la page d'accueil <asp:Content />

+0

+1, oui, ce serait la façon la moins krufty de le faire. –

+0

+1 La plupart des autres manières de faire cela auraient l'équivalent de demander à une classe parente de connaître ses sous-classes. –

+0

Je suis en dialogue avec les développeurs backend sur l'implémentation de cette solution. – chrisb

0

si vous utilisez vb.net, vous pouvez utiliser l'espace réservé contenu comme mentionné ci-dessus, mais il suffit d'utiliser un peu codebehind sur le fichier masterpage vb pour cacher/montrer l'espace réservé:

If Request.Url.AbsolutePath.ToLower = "/index.aspx" Then 
    jQueryCode.Visible = true 
End If 

(assurez-vous de définir l'affichage par défaut sur visible: false avant la reconstruction comme ceci :)

<asp:Content ContentPlaceHolderId="jQueryCode" runat="server" visible="false"> 
    // run jQuery script here 
</asp:Content>