IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Modifier script javascript existant dans page .aspx


Sujet :

ASP.NET

  1. #1
    Membre averti
    Homme Profil pro
    D�veloppeur web
    Inscrit en
    Mai 2012
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 57
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activit� : D�veloppeur web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 14
    Par d�faut Modifier script javascript existant dans page .aspx
    Bonjour � tous,
    Je recherche depuis �longtemps, la m�thode pour modifier depuis le code-behind, la valeur d�une variable contenue dans une balise <script type="text/javascript"> d�une page .aspx. Je souhaite modifier cette variable au chargement de la page.
    J�ai �tudi� la m�thode � RegisterClientScriptBlock � de la class � ClientScriptManager �. Elle permet d�ajouter un nouveau script mais pas de modifier un script existant.
    Si le script avait �t� plus court j�aurai bien utilis� cette m�thode, mais ce n�est pas le cas.
    Auriez-vous une suggestion � me faire ?

  2. #2
    Expert confirm�

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activit� : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Par d�faut
    Bonjour,

    Je n'ai pas tr�s bien saisi votre probl�me.
    Pour ce qui est de modifier au chargement de la page => protected void Page_Load(object sender, EventArgs e) et le code dedans.

    Pour ce qui est du javascript, o� est le script en question ? Quand s'ex�cute-t-il ?
    Avant toute chose : lire le mode d'emploi du forum et ses r�gles.
    Je ne r�ponds pas aux questions techniques en MP.

  3. #3
    Membre averti
    Homme Profil pro
    D�veloppeur web
    Inscrit en
    Mai 2012
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 57
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activit� : D�veloppeur web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 14
    Par d�faut
    Bonjour et merci pour ce contact,

    Alors...j'ai dans l'ent�te de ma page de contenu (.aspx) un script javaScript qui s'ex�cute lorsque la page est enti�rement charg�e. C'est dans ce script que je souhaite modifier le contenu d'une variable.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type="text/javascript">
     
            $(document).ready(function() {
     
                var maVariable = “contenu fct du user”
     
                //... code qui utilise “maVariable” 
     
                };
        </script>
    Modifier une page de contenu au chargement via
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    ne me pose pas de probl�me jusqu'� pr�sent. (j'ai m�me dit que j'avais r�ussi � ins�rer un nouveau script). Le souci, c'est comment modifier cette variable, contenu dans un script existant ?

    J'ai d�j� envisag� la piste suivante : ins�rer �contenu fct du user� dans un asp:TextBox cach�e avec le code-behind. Puis r�cup�rer le contenu de l'asp:TextBox avec JS mais je me suis dit qu'il existait forc�ment plus simple et plus s�curis� car pour corser l'action �contenu fct du user� contient du script.

    J'esp�re que ces infos compl�mentaires vous aiderons

    A+

  4. #4
    R�dacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur .NET
    Secteur : Services � domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par d�faut
    Bonjour,

    Si j'ai bien compris, ton script s'ex�cute une fois que la page est charg�e ?

    Si oui, dans ce cas, tu peux essayer d'utiliser la m�thode ClientScriptManager.RegisterClientStartupScript

  5. #5
    Membre averti
    Homme Profil pro
    D�veloppeur web
    Inscrit en
    Mai 2012
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 57
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activit� : D�veloppeur web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 14
    Par d�faut
    Bonjour Jean-Michel,
    Oui en effet, c'est une piste mais dans mon cas la StringBuilder serait...charg�e.
    Un "dessin" valant mieux qu'un long et confus discours (et puis, y'a rien � cacher), voil� le code auquel je veux parvenir - C'est le contenu du param�tre "areas" (en violet dans le code) qui doit �tre modifi� lors du chargement de la page :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
        <script type="text/javascript">
    
            $(document).ready(function() {       
    
                monPlan = $('img[id*="monImg"]');
                var listeZones = $('#id_div_listSelectZones');
    
                var optionsImgMapster = {
                    stroke: true,
                    strokeColor: "00FF00",
                    strokeWidth: 3,
    
                    fill: true,
                    fillColor: "FFFFFF", //la transparence (sinon noir)
                    fillOpacity: 0, //opacit� nulle (sinon l'opacit� n'est pas nulle)
    
                    mapKey: 'themezone', //indique l'attribut utilis� pour d�finir les particularit�s des AREA
                    listKey: 'name',
    
                    mapValue: 'themezone', // valeur de l'attribut � transmettre � la fct onGetList
                    onGetList: addCheckBoxes, //fct qui ajoute une liste des "data-zoneType" � cocher
    
                    areas: [
        	                { key: 'Basique', strokeColor: "33FF33", fillColor: "FF0000", fillOpacity: 0.7 },
        	                { key: 'Zone amiant�e', strokeColor: "FF0000", fillColor: "FF0000", fillOpacity: 0.7 },
        	                { key: 'Zone non amiant�e', strokeColor: "33FF33", fillColor: "33FF33", fillOpacity: 0.7 },
        	                { key: 'compAmiante', strokeColor: "CC9900", fillColor: "008B8B", fillOpacity: 0.7 }
                        ]
                };
    
                
                /*-- active imageMapster --*/
                monPlan.mapster(optionsImgMapster);
    
    
                function addCheckBoxes(items) {
                    var item, selected;
                    listeZones.children().remove();
                    for (var i = 0; i < items.length; i++) {
                        selected = items[i].isSelected();
                        item = '<div><input type="checkbox" name="' + items[i].key + '"';
                        item = item + (selected ? "checked" : "") + '><span class="sel" key="';
                        item = item + items[i].key + '">' + items[i].value + '</span></div>';
                        item = $(item);
                        listeZones.append(item);
                    }
                    listeZones.find('span.sel').unbind('click').bind('click', function(e) {
                        var key = $(this).attr('key');
                        monPlan.mapster('highlight', true, key);
                    });
                    // return the list to mapster so it can bind to it
                    return listeZones.find('input:checkbox').unbind('click').click(function(e) {
                        var selected = $(this).is(':checked');
                        monPlan.mapster('set', selected, $(this).attr('name'));
                        styleCheckbox(selected, $(this));
                    });
                }
    
            });     
    
        </script>
    L'utilisation des balises <%=%> ne permet pas d'ins�rer ce type de contenu.
    Id�alement il faudrai pouvoir ins�rer <script> optionsImgMapster.areas =.....</script> entre 2 scripts existants.
    Qu'en penses-tu ?

  6. #6
    Membre averti
    Homme Profil pro
    D�veloppeur web
    Inscrit en
    Mai 2012
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 57
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activit� : D�veloppeur web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 14
    Par d�faut La solution*:
    La solution est simplissime (lorsqu�on l�a mis au moins 1 fois en �uvre ). Elle utilise la m�thode ClientScriptManager.RegisterClientScriptBlock sugg�r�e par Jean-Michel et la position du script ins�r� n�est aucunement un frein au d�roulement du programme comme je le pensai.

    Dans la page .aspx, j'inscris le script � modifier :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <script id="existant" type="text/javascript">
    $(document).ready(function() {
      ...
      maVariable ={ // NB : la variable a modifier doit être globale (pas de "var=...")
      param1 : ...,
      param2 : ...,
      monParam :[]   // dans mon cas c'est un table
    };
     
      initMonParam(); // On appelle la fct qui va modifier le paramètre de la variable objet
      ...
    });
    </script>
    Pour modifier "maVariable", je dois ins�rer ce script :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    <script id="script_ajouté" type="text/javascript">  // tout ce script est ajouté via le code-behind de la page aspx
    function initMonParam(){
      var monContenu = [ blablabla..............]; 
      maVariable.monParam = monContenu;
    };
    </script>
    pour y parvenir, je glisse dans le "Page_Load" de la page .aspx, le code vb.net suivant :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim l_TextScript As New StringBuilder()
    Dim cs As ClientScriptManager = Page.ClientScript
     
    l_TextScript.Append("<script type=""text/javascript"">" & vbCr)
    l_TextScript.Append("function initMonParam() {" & vbCr)
    l_TextScript.Append("var monContenu =" & contenuXml & ";" & vbCr)
    l_TextScript.Append("maVariable.monParam = monContenu;" & vbCr)
    l_TextScript.Append("};" & vbCr & "</script>")
     
    cs.RegisterClientScriptBlock(GetType(String), "script_ajouté", l_TextScript.ToString(), False)
    2 notions sont importantes :
    • la variable � modifier doit �tre GLOBALE,
    • comme la variable modifi�e est utilis�e apr�s le chargement complet de la page (gr�ce � � $(document).ready� �), la sous-fonction JS qui permet de l�initialiser a d�j� �t� �crite dans la page et peut donc �tre appel�e.


    Lorsque j�ai r�dig� le code-behind, il y a un truc que j�ai appr�ci� et que je vous conseille. Vous avez remarqu� que les doubles quotes devaient �tre doubl�es dans le �StringBuilder�. Et bien ce n�est pas le cas pour le contenu r�cup�r� depuis un fichier xml (variable �contenuXml�). Au final, pas de manip. de la chaine de caract�res et un affichage du contenu xml identique au futur script.

    Voil� ! En esp�rant que �a aide qqu1.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Variables UserControl dans page aspx
    Par patachouNewG dans le forum C#
    R�ponses: 1
    Dernier message: 06/05/2008, 12h42
  2. [Js dans page aspx] Redirection
    Par onouiri dans le forum G�n�ral JavaScript
    R�ponses: 5
    Dernier message: 15/08/2007, 10h14
  3. appel de javascript impossible dans page appel�e en ajax
    Par brazilia28 dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 08/08/2007, 10h48
  4. Utiliser script bdD existant dans pgadmin
    Par vvaness30 dans le forum PostgreSQL
    R�ponses: 2
    Dernier message: 02/03/2007, 11h35
  5. applet java dans page ASPX
    Par volivi dans le forum Applets
    R�ponses: 1
    Dernier message: 06/11/2006, 21h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo