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

Bibliothèques & Frameworks Discussion :

Tree ne se charge pas sur F5 sous IE7


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut Tree ne se charge pas sur F5 sous IE7
    Salut,

    Problème bizarre : J'ai une page contenant un Tree.

    Si je recharge la page, le Tree se bloque sous IE (j'ai la petite horloge à gauche du noeud root) alors que ça fonctionne sous FFx.

    J'ai essayé d'ajouter un urlPreventCache et un clearOnClose sur le store mais ça ne change rien.

    J'ai googlé le problème sans trouver de solution pour le moment.
    *.Har(d)t
    ---
    "Je donnerais mon bras droit pour être ambidextre"
    Brian W. Kernighan

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut *.Har(d)t,

    C'est possible d'avoir un code pour tester ?

    ERE
    Quand une tête pense seule, elle devient folle.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut
    Désolé, oubli de ma part.

    Je ne peux pas tout mettre parce que c'est long.

    En résumé, j'ai un fichier index.htm avec des onglets.
    Dans l'onglet qui m'intéresse, je charge une page modele.htm qui contient dans une sidebar à gauche le Tree, et à droite un Grid qui affiche des données issues d'une base en fonction de l'élément sélectionné dans le Tree.

    Le tree est construit programmatiquement dans une fonction appelée "chargement", appelée dans index.htm sur le onLoad du ContentPane du tab.

    Ca, c'est la classe Tree modifiée que j'utilise.

    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
     
    dojo.declare("RtcdTree", dijit.Tree, {
                editing: false,
                postCreate: function(){
                        this.inherited("postCreate", arguments);
                        this.connect(this.domNode, "ondblclick", this._onDblClick);
                },
                _onKeyPress: function(/*Event*/ e) {
                        if (this.tree.editing) 
                                return; // we are editing so we should ignore all keys
                        this.inherited(arguments);
                },
     
                _onDblClick: function(/*Event*/ e){
                        var domElement = e.target;
                        var nodeWidget = dijit.getEnclosingWidget(domElement); 
                        if(!nodeWidget || !nodeWidget.isTreeNode){
                                return;
                        }
                        this.editing = true; // turn off keys for the tree
     
                        // first we put a span in to attach the editor to. This avoids errors
                        var labelNode = nodeWidget.labelNode;
                        var editSpan = document.createElement('span');
                        editSpan.innerHTML = labelNode.innerHTML;
                        labelNode.innerHTML = "";
                        labelNode.appendChild(editSpan);
                        var editor = new dijit.InlineEditBox({
                                                node: nodeWidget,
                                                tree: this,
                                                model: this.model,
                                                autoSave: true,
                                                onChange: function(val){
                                                        this.model.store.setValue(this.node.item,'nom', val);
                                                        this.tree.editing = false;
                                                },
                                                width: "100px"
                                                }, editSpan);
                        editor.startup();
                        editor.edit();
     
                }
        });
    Ca c'est le store

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var store = new dojo.data.ItemFileWriteStore({
    		clearOnClose: true,
    		urlPreventCache: true,
                    url: id_site + ".json"
        });
    Ca c'est le model

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var treeModel = new dijit.tree.ForestStoreModel({
        store: store,
        id: "model1114",
        query: {"id" : "*"},
        rootId: "root",
        rootLabel: "Dossiers",
        childrenAttrs: ["enfants"]
    });
    Et ça, c'est le Tree proprement dit

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    var tree = new RtcdTree({
                    model: treeModel,
    				showRoot:false,
                    onClick: function(item) {
                            selectedItem = item;
                			dojo.byId('id_entite').value = item.id;
     
    						i = i + 1;
    						var gridId = "grid" + i;
    						if( i == 1 ) {
    							oldGridId = "grid1";
    						}
    						else {
    							j = i-1;
    							oldGridId = "grid" + j;
    						}
     
    						//alert(oldGridId);
     
                            if ( dijit.byId('accordeon').selectedChildWidget == paneGrid  ) {
    									var defer1 = dojo.xhrGet({
                                        url : "../ajax/modeles.php?id=" + item.id,
                                        handleAs : "json",
    									load : function(donnees) {
     
     
     
    										var n = dijit.byId('paneGrid').childNodes;
    										if(dijit.byId(oldGridId)) {
    											dojo._destroyElement(document.getElementById(oldGridId));
    											//alert(oldGridId + "va être détruit si tout va bien");
    										}
     
    										var storeModelesListe = new dojo.data.ItemFileWriteStore({
    											data: donnees
    						                });
     
    							            var structureModeles = [
    											{ field: 'date', name: 'Date de création', width:'200px'},
    							                { field: 'titre', name: 'titre', width: '200px' },
    							                { field: 'support', name: 'support', width: 'auto' }
    							            ];
     
    							            if(document.getElementById("grid01")){
    											dojo._destroyElement(dojo.byId("grid01"));
    										}
     
    										gridModeles = new dojox.grid.DataGrid({
    														id:gridId,
    														query:{ id: '*' },
    														store: storeModelesListe,
    														structure: structureModeles,                                                            
    						                                clientSort: true,
    														rowSelector: '20px',
    														loadingMessage: "Loading...",
    														onRowClick : function(e) {
    															var item = this.getItem(e.rowIndex);
    															var nomChamp = e.cell.field;
    															var valeurChamp = storeModelesListe.getValue(item,e.cell.field);
     
    															switch( nomChamp ) {
    																case "support":
    																	open("uploads/1114/" + valeurChamp, "_blank");
    																	break;
    																default:
     
    																	break;
    															}
    														}
    														});
     
    										dijit.byId('paneGrid').containerNode.appendChild(gridModeles.domNode);
     
    										gridModeles.startup();
     
    										},
    										error: function(error){
    											alert(error);
    										}
    				                        });
     
    						}    
                    }
                }, "arbre1114");
    if (droitAdmin == 1) {
    	pMenu = new dijit.Menu({
    		targetNodeIds: ["arbre1114"]
    	});
     
    	pMenu.addChild(new dijit.MenuItem({
                             label: "Nouveau",
                             id: "mnuNouveau",
                             onClick: function(){getIdEntite(selectedItem);}
                        })
                   );       
     
    	pMenu.startup();
    }
     
     
     
    }
    Dans firefox tout va bien.

    Dans IE7, le premier chargement se passe bien, mais si je fais un refresh, ou que je reviens sur cette page suite à un header, le tree reste bloqué...
    *.Har(d)t
    ---
    "Je donnerais mon bras droit pour être ambidextre"
    Brian W. Kernighan

  4. #4
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut i*.Har(d)t,

    Je ne vois pas ce qui pourrait poser problème dans ton code.
    Et comme cela fonctionne avec Firefox, je me demande si ce n'est pas un problème lié à IE et au Tree, et plus particulièrement la gestion de la persistence par l'intermédiaire des cookies. Fais un test:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var tree = new RtcdTree({
        model: treeModel,
        persist:false,
        showRoot:false,
     ...
    A+,

    ERE
    Quand une tête pense seule, elle devient folle.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par emmanuel.remy Voir le message
    Salut i*.Har(d)t,

    Je ne vois pas ce qui pourrait poser problème dans ton code.
    Et comme cela fonctionne avec Firefox, je me demande si ce n'est pas un problème lié à IE et au Tree, et plus particulièrement la gestion de la persistence par l'intermédiaire des cookies. Fais un test:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var tree = new RtcdTree({
        model: treeModel,
        persist:false,
        showRoot:false,
     ...
    A+,

    ERE
    Salut,

    J'ai testé ta solution, mais j'ai toujours le même problème au rechargement de la page sous IE.

    Tous les problèmes similaires que j'ai pu trouver sur internet (rechargement sous IE) sont liés de près ou de loin au caching dans IE, mais rien ne semble fonctionner dans mon cas.
    Probablement parce que cette page est dans un dojox.layout.ContentPane...

    Je continue à creuser, mais je commence à me demander si je ne vais pas devoir revoir cette interface à la baisse et créer une page par onglet

    EDIT
    -----

    Bon, après un petit test, ça ne vient pas du ContentPane.

    J'ai fait un fichier contenant tout le code, donc pas d'inclusion via des href etc...

    Ben rebelote, sous Firefox c'est ok, sous IE7 ça charge le tree une fois mais pas au rechargement de la page.

    IE donne comme message d'erreur "Objet attendu" à la ligne 17...

    Ci-dessous le code, et le contenu du fichier 1114.json

    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
    <html>
    	<head>
    		<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dijit/themes/tundra/tundra.css" />
    		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js"
            djConfig="parseOnLoad:true"></script>
        	<script type="text/javascript">
        		dojo.require('dojo.parser');
    			dojo.require('dojo.data.ItemFileWriteStore');
    	        dojo.require('dijit.Tree');
    			dojo.require('dojox.grid.DataGrid');
    			dojo.require('dijit.layout.TabContainer');
    			dojo.require("dijit.layout.ContentPane");
     
     
    			dojo.addOnLoad(function() {
     
    				var treeStore = new dojo.data.ItemFileWriteStore({
    					url : "1114.json"
    				});
     
    				var treeModel = new dijit.tree.ForestStoreModel({
    				    store: treeStore,
    				    id: "model1114",
    				    query: {"id" : "*"},
    				    rootId: "root",
    				    rootLabel: "Dossiers",
    				    childrenAttrs: ["enfants"]
    				});
     
    				var tree = new dijit.Tree({
    					model : treeModel,
    					showRoot : false
    				}, 'arbre');
     
    			});
    		</script>
    	</head>
     
    	<body class="tundra">
     
    		<div id="arbre"></div>
     
    	</body>
    </html>
    Fichier json

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {identifier: 'id',label: 'nom',items:[{"id":"26","nom":"Rapports","id_site":"1114","id_parent":"0","enfants":[{"id":"34","nom":"Allemand","id_site":"1114","id_parent":"26"},{"id":"32","nom":"Anglais","id_site":"1114","id_parent":"26"},{"id":"35","nom":"dddd","id_site":"1114","id_parent":"26"},{"id":"33","nom":"Fran\u00e7ais","id_site":"1114","id_parent":"26"}]}]}
    *.Har(d)t
    ---
    "Je donnerais mon bras droit pour être ambidextre"
    Brian W. Kernighan

  6. #6
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Piste
    Salut,

    Je viens de tester et j'ai le même souci dans IE . Par contre tout est ok (IE et Firefox) quand je n'utilise pas le chargement de dojo.js via CDN AOL ou Google, mais que je reste en local...

    ERE
    Quand une tête pense seule, elle devient folle.

Discussions similaires

  1. Fichier CSS qui ne se charge pas sur la page de connexion
    Par GDS_Strou dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 30/01/2016, 10h39
  2. Réponses: 1
    Dernier message: 18/08/2015, 12h23
  3. Montée en charge du CPU sur liens sous IE7
    Par Neroptik dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 18/09/2007, 18h11
  4. [Sécurité] Pas de HTTP_REFERER sous IE7 ?
    Par klerthis dans le forum Langage
    Réponses: 2
    Dernier message: 23/01/2007, 18h06
  5. Marche sous FF mais pas sur IE...
    Par benjiiim dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/11/2005, 10h54

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