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 :

Changer l'opacité d'un marker en fonction de l'état d'une checkbox


Sujet :

Bibliothèques & Frameworks

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Par défaut Changer l'opacité d'un marker en fonction de l'état d'une checkbox
    Bonjour à tous,

    J'ai créé une Map interactive pour le jeu anthem qui contient un peu moins de 300 marker.
    Certains de ces markers sont des objets à ramasser de manière unique.
    Pour aider les joueurs, j'ai rajouté dans le popup qui s'ouvre quand on clique sur le marqueur une checkbox.
    Mais pour plus de clarté sur la map et afin de repérer facilement les objets déjà trouvés, je voudrais réduire l'opacité du marker.

    Et c'est là que je bloque car je n'arrive pas à le faire.

    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
    Var mymap;
    Var markeropa
     
    	function opacitynorm(e) {
    		e.setOpacity(1);
    	};
     
    	function opacitymin(e) {
    		e.setOpacity(0.5);
    	};
     
    $(function () {
     
    // Initialisation et chargement de la Map
    	mymap = L.map('mapid', {
    				crs: L.CRS.Simple,
    				minZoom : -1,
    				maxZoom : 1,
    				attribution : 'TMKFrench'
    			});
     
    	mymap.setMaxBounds(new L.latLngBounds([0,0], [2600,2000]));
     
    	var bounds = [[0,0], [2000,2000]];
    	var image = L.imageOverlay('media/mapbig.jpg', bounds).addTo(mymap);
     
    	mymap.fitBounds(bounds);
     
    // Déclaration des types marqueurs
    	var Rune = L.icon({
        iconUrl:      'http://anthem.tmkfrench.fr/media/icones/rune.png',
        className:    'rune',
        iconSize:     [26, 26],
        iconAnchor:   [13, 13],
        popupAnchor:  [0, -13]
    	});
     
    	var popupOptions =
        {
            'minWidth': '640px',
            'minHeight': '480px'
        }
     
    // Liste des marqueurs	
    	L.marker([500,500], {icon: Rune, title: "1"}).addTo(mymap).bindPopup('<input id="mapbox" value="test1" type="checkbox" /> Trouvé 1');
    	L.marker([1000,1000], {icon: Rune, title: "2"}).addTo(mymap).bindPopup('<input id="mapbox" value="test2" type="checkbox" /> Trouvé 2');
    	L.marker([1500,1500], {icon: Rune, title: "3"}).addTo(mymap).bindPopup('<input id="mapbox" value="test3" type="checkbox" /> Trouvé 3');
     
     
    	mymap.on("click", onMapClick);
     
    	mymap.on('popupopen', function () {
    		$.cookie.json = true;
    		$(":checkbox").on("change", function(){
    			var checkboxValues = {};
    			var checkboxname = "chkbox" + this.value;
    			checkboxValues[this.id] = this.checked;
    			$.cookie(checkboxname, checkboxValues, { expires: 3650, path: '/' })
    		});
    		var checkboxname = "chkbox" + document.getElementById("mapbox").value;
    		var checkboxValuesrp = $.cookie(checkboxname);
    			if(checkboxValuesrp){
    				Object.keys(checkboxValuesrp).forEach(function(element) {
    				var checked = checkboxValuesrp[element];
    				$("#mapbox").prop('checked', checked);
    				});
    			};	
    		var checkboxstate = document.getElementById("mapbox").checked;
    			if (checkboxstate){
    					console.log("checkbox cochée");
    					opacitymin();
    			}
    			else {
    				console.log("checkbox vide");
    				opacitynorm();
    			};
    		});
    });
    J'ai essayé bon nombre de solution sans succés.
    J'ai testé la fonction on('click', fct(xx)) à la fin des ligne de marqueur pour récupérer la valeur du marqueur et la stocker dans une variable globale pour pouvoir ensuite changer la valeur opacity dans une fonction dédiée, sans succés.
    De plus il faut que je règle cette valeur pour chaque marqueur dont la checkbox est cochée à la réouverture de la map. Les valeurs des checkbox sont stockées dans des cookies propre à chaque checkbox. A l'ouverture du popup, s'il existe une chkbx dedans, cela vérifie si un cookie à été crée et si oui cela coche ou pas la checkbox en fonction de la valeur du cookies.
    Pour régénérer la valeur de l'opacité en fonction de l'état de la checkbox à l'ouverture de la map, je n'ai qu'à rajouter .openpopup à la fin de chaque marqueur afin de forcer leur ouverture à la création de la map.

    Un exemple avec le code complet est disponible ici http://anthem.tmkfrench.fr/test4.html

    Merci de l'aide que vous pourrez m'apporter car j'avoue tourner en rond. Et mes connaissances ne me permette pas d'aller plus loin.

  2. #2
    Membre émérite
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 340
    Par défaut
    Bonjour,
    J'ai testé la fonction on('click', fct(xx)) à la fin des ligne de marqueur pour récupérer la valeur du marqueur et la stocker dans une variable globale pour pouvoir ensuite changer la valeur opacity dans une fonction dédiée, sans succés.
    Si je teste la page, je vois que la fonction "onMarkerClick" est appelée après l'ouverture du popup.

    En inversant l'ordre, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L.marker([500,500], {icon: Rune, title: "1"}).addTo(mymap).on('click', onMarkerClick).bindPopup('<input id="mapbox" value="test1" type="checkbox" /> Trouvé 1');
    la fonction "onMarkerClick" est appelée avant et le changement d'opacité fonctionne.

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Par défaut
    Merci Loralina pour votre réponse.

    Elle a en partie résolu mon problème. Effectivement en plaçant la fonction on.('click') avant j'arrive à récupérer dans la variable markeropa, le marker dont je peux changer l'opacité de son icone.
    Après quelques arrangement dans le code, l'opacité se règle instantanément quand j'agis sur la checkbox.

    voici le nouveau code :
    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
    	var mymap;
    	var markeropa;
     
    	function onMapClick(e) {
    		console.log("Vous avez cliqué sur la map à " + mymap.wrapLatLng(e.latlng));
    	};
     
    	function onMarkerClick(e) {
    		markeropa = this;
    	}
     
    	function markeropacity(e) {
    		if (e){
    				console.log("checkbox cochée");
    				markeropa.setOpacity(0.5);
    			}
    			else {
    				console.log("checkbox vide");
    				markeropa.setOpacity(1);
    			};
     
    	}
     
    $(function () {
     
    // Initialisation et chargement de la Map
    	mymap = L.map('mapid', {
    				crs: L.CRS.Simple,
    				minZoom : -1,
    				maxZoom : 1
    			});
     
    	mymap.setMaxBounds(new L.latLngBounds([0,0], [2600,2000]));
     
    	var bounds = [[0,0], [2000,2000]];
    	var image = L.imageOverlay('media/mapbig.jpg', bounds).addTo(mymap);
     
    	mymap.fitBounds(bounds);
     
    // Déclaration des types marqueurs
    	var Rune = L.icon({
        iconUrl:      'http://anthem.tmkfrench.fr/media/icones/rune.png',
        className:    'rune',
        iconSize:     [26, 26],
        iconAnchor:   [13, 13],
        popupAnchor:  [0, -13]
    	});
     
    	var popupOptions =
        {
            'minWidth': '640px',
            'minHeight': '480px'
        }
     
    // Liste des marqueurs	
    	L.marker([500,500], {icon: Rune, title: "1"}).addTo(mymap).on('click', onMarkerClick).bindPopup('<input id="mapbox" value="test1" type="checkbox" /> Trouvé 1');
    	L.marker([1000,1000], {icon: Rune, title: "2"}).addTo(mymap).on('click', onMarkerClick).bindPopup('<input id="mapbox" value="test2" type="checkbox" /> Trouvé 2');
    	L.marker([1500,1500], {icon: Rune, title: "3"}).addTo(mymap).on('click', onMarkerClick).bindPopup('<input id="mapbox" value="test3" type="checkbox" /> Trouvé 3');
     
     
    	mymap.on("click", onMapClick);
     
    	mymap.on('popupopen', function () {
    		$.cookie.json = true;
    		$(":checkbox").on("change", function(){
    			var checkboxValues = {};
    			var checkboxname = "chkbox" + this.value;
    			checkboxValues[this.id] = this.checked;
    			var checkboxstate = this.checked;
    			$.cookie(checkboxname, checkboxValues, { expires: 3650, path: '/' });
                console.log("La checkbox est en etat : " + checkboxstate);
    			markeropacity(checkboxstate);
    		});
    		var checkboxname = "chkbox" + document.getElementById("mapbox").value;
    		var checkboxValuesrp = $.cookie(checkboxname);
    			if(checkboxValuesrp){
    				Object.keys(checkboxValuesrp).forEach(function(element) {
    				var checked = checkboxValuesrp[element];
    				$("#mapbox").prop('checked', checked);
    				});
    			};	
    		var checkboxstate = document.getElementById("mapbox").checked;
    		markeropacity(checkboxstate);
    		});
    });
    Voici le lien pour voir le fonctionnement du nouveau code : http://anthem.tmkfrench.fr/test.html

    C'est une belle avancée dans ce que je voulais faire. Il me reste un soucis pourtant. quand je recharge la map. L'opacité des marqueurs est à nouveau normale. et il faut que je clique sur le marqueur pour que celui-ci voit son opacité changer si nécessaire (checkbox déjà cochée). N'y a-t-il pas moyen d'appeler la fonction onMarkerClick à la création du marker plutôt que d'attendre qu'on clique dessus ? cela résoudrai tous mes problèmes car je n'aurai qu'à mettre un .openPopup() a chaque marqueur forçant leur ouverture à leur création.

    En tout cas merci d'avoir porté une attention à mon casse tête

    Laurent.

  4. #4
    Membre émérite
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 340
    Par défaut
    Bonsoir,
    je n'aurai qu'à mettre un .openPopup() a chaque marqueur forçant leur ouverture à leur création.
    L'ouverture des popups est-elle requise ?
    Parce que sinon, on peut faire une petite initialisation dans ce style :
    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
    $.cookie.json=true;
    var markers=[
    	L.marker([500,500], {icon: Rune, title: "1"}).addTo(mymap).on('click', onMarkerClick).bindPopup('<input id="mapbox" value="test1" type="checkbox" /> Trouvé 1'),
    	L.marker([1000,1000], {icon: Rune, title: "2"}).addTo(mymap).on('click', onMarkerClick).bindPopup('<input id="mapbox" value="test2" type="checkbox" /> Trouvé 2'),
    	L.marker([1500,1500], {icon: Rune, title: "3"}).addTo(mymap).on('click', onMarkerClick).bindPopup('<input id="mapbox" value="test3" type="checkbox" /> Trouvé 3')];
    var ob_;
    var i=markers.length;
    while(--i>=0)
    	{
    	if((ob_=$.cookie("chkboxtest"+(i+1))) && ob_.mapbox===true)
    		{
    		markeropa=markers[i];
    		markeropacity(true);
    		}
    	}
    C'est plus du dépannage qu'une solution vraiment propre.

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Par défaut
    Merci Loralina,

    Cette méthode fonctionne parfaitement.

    Comme sur la vrai map, j'ai à peu près 300 marqueurs divisés en plusieurs catégories, j'ai crée une fonction à part que j'appelle à la fin de chaque bloc de marqueurs en injectant, le nom de la variable du bloc et le nom du cookie à utiliser pour ce bloc.

    Ainsi je peux rajouter des marqueurs sans problème et tout est bien géré.

    Je te laisse voir comment j'ai utilisé ton code sur la page de test et le resultat final ici : http://anthem.tmkfrench.fr

    Merci de ton aide car cela m'a permis de mettre en place un fonction plus qu'agréable pour tous les utilisateur de ma map.

    Bien évidement je t'ai cité dans les remerciements, ce qui est peu de chose.

    Je laisse ce post en non résolu car j'ai une idée en tête que je vais tacher de mettre au point. Si je n'y arrive pas, Je te l'expliquerai ici. Ca reste dans la continuité de tout ce qui a été traité ici.

    Encore merci.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Par défaut
    Bon j'ai reussi à mettre au point mon idée, à savoir un bouton de reset des marqueurs.

    Pour cela, j'ai rajouté dans ta fonction, deux commandes push qui me crée deux array dans des variable globale stockant ainsi les types de cookies (runes, coffres, etc...) et le nombre de marqueurs de chaque type.

    J'ai ensuite crée une fonction qui traite en boucle ces array pour effacer tous les cookies.

    Tu peux voir son fonctionnement ici : http://anthem.tmkfrench.fr/test.html.

    J'ai une dernière question : est-il possible de crée un fichier texte pour exporter/importer la liste des cookies ? cela permettrai aux personnes utilisant ma carte sur plusieurs appareils de se passer la liste des points déjà validés.

  7. #7
    Membre émérite
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 340
    Par défaut
    Bonjour,
    Citation Envoyé par TMKFrench Voir le message
    est-il possible de crée un fichier texte pour exporter/importer la liste des cookies ? cela permettrai aux personnes utilisant ma carte sur plusieurs appareils de se passer la liste des points déjà validés.
    Quelque chose de local ?
    Exemple :
    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
    <a href="" id="lien" download="test.txt">Enregistrer</a><br><br>
    <input type="file" id="fichier" accept=".txt">
    <script>
    document.getElementById('lien').addEventListener('click',function(ev_)
    	{
    	this.href=URL.createObjectURL(new Blob([JSON.stringify([{a:1,b:2},{c:3,d:4}])]));
    	});
    document.getElementById('fichier').addEventListener('change',function(ev_)
    	{
    	var fr_;
     
    	(fr_=new FileReader()).onload=function(ev_)
    		{
    		console.log(JSON.parse(this.result)); //Array
    		};
    	fr_.readAsText(this.files[0]);
    	});
    </script>

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Par défaut
    Houla ! tu m'as completement perdu

    J'avoue que c'est du code que je ne maitrise pas tout à fait.

    Si j'ai bien compris :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="" id="lien" download="test.txt">Enregistrer</a><br><br>
    Ca c'est le bouton enregistrer.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="file" id="fichier" accept=".txt">
    Ca c'est la fenetre de sélectien de fichier. Pour la lecture ou l'enregistrement ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    document.getElementById('lien').addEventListener('click',function(ev_)
    	{
    	this.href=URL.createObjectURL(new Blob([JSON.stringify([{a:1,b:2},{c:3,d:4}])]));
    	});
    Ca c'est la fonction qui crée l'objet de type Array (si j'ai bien compris) et qui est appelée quand on clique sur enregistrer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    document.getElementById('fichier').addEventListener('change',function(ev_)
    	{
    	var fr_;
     
    	(fr_=new FileReader()).onload=function(ev_)
    		{
    		console.log(JSON.parse(this.result)); //Array
    		};
    	fr_.readAsText(this.files[0]);
    	});
    Par contre j'ai du mal à comprendre le fonctionnement de cette fonction.

    Désolé de passer pour un noob, mais je préfère comprendre comment s'utilise un code, plutôt que de bêtement le recopier.

    Pour les données à sauvegarder, j'avais pensé, un peu comme le fait ma fonction reset, créer un variable array, et tester tous les cookies :

    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
    var listecookie = [];
    	function savecookies() {
    		var nbgrp = catmarkers.length;
    		var categ, nbm, cbx, i, ob_;
    		while (--nbgrp >= 0) {
    			categ = catmarkers[nbgrp];
    			nbm = nbmarkers[nbgrp];
    			for (i=1; i < (nbm+1); i++) {
    				cbx = "chkbox" + categ + i;
    				if ((ob_ = $.cookie(cbx)) && ob_.mapbox === true) {
                                       listecookie.push(categ + i);
                                    }
    			};
    		};
    	};
    reste à passer listecookie dans ta fonction pour sauvegarder. (il se sauvegarde où au fait ? à moins que ta fonction force le téléchargement dans le répertoire download par défaut du navigateur ? c'est ca ou je me trompe ?

    Pour l'importation je n'ai pas compris comment tu procèdes.

  9. #9
    Membre émérite
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 340
    Par défaut
    Bonjour,
    Je simplifie et je sépare les deux :

    Enregistrement :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <a href="" id="lien" download="test.txt">Enregistrer</a><br><br>
    <script>
    document.getElementById('lien').addEventListener('click',function(ev_)
            {
            this.href=URL.createObjectURL(new Blob(["azerty"]));
            });
    </script>
    Quand on clique sur "Enregistrer", le navigateur propose à l'utilisateur d'enregistrer, à l'emplacement de son choix, un fichier "test.txt" contenant le texte "azerty".

    Chargement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <input type="file" id="fichier" accept=".txt">
    <script>
    document.getElementById('fichier').addEventListener('change',function(ev_)
    	{
    	var fr_;
     
    	(fr_=new FileReader()).onload=function(ev_)
    		{
    		console.log(this.result); //azerty
    		};
    	fr_.readAsText(this.files[0]);
    	});
    </script>
    Quand on clique sur "Parcourir", une boîte de dialogue permet de sélectionner un fichier texte.
    Si l'utilisateur sélectionne le fichier "test.txt" précédemment enregistré, ça affichera "azerty".

    C'est une ébauche, il faut bien lire les documentations sur les éléments utilisés, voir quelles sont les options possibles, le support des navigateurs etc. et bien sûr il faut vérifier que le fichier chargé est conforme.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Par défaut
    Bonjour Loralina et bonnes Pâques.

    il faut bien lire les documentations sur les éléments utilisés, voir quelles sont les options possibles, le support des navigateurs etc.
    Oui c'est ce que je fais systématiquement

    Merci pour tes éclaircissements concernant ton code.

    J'ai rencontré deux soucis :

    1/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    savecookies();
    this.href=URL.createObjectURL(new Blob([JSON.stringify(listecookie)]));
    Le code ci-dessus ne marche pas, alors je l'ai modifié comme ci-dessous avec un return listecookie; à la fin de la fonction savecookies()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.href=URL.createObjectURL(new Blob([JSON.stringify(savecookies())]));
    Je ne sais pas pourquoi mais je me retrouvais avec un fichier vide ( avec seulement [] ), malgré le fait que listecookie soit en variable globale. En la retournant en fin de fonction plus de problème.

    2/
    Le coté esthétique du bouton Ouvrir un fichier . J'avoue qu'il aurai pu faire un effort au niveau intégration. En cherchant un peu j'ai trouvé comment l'appeler via un bouton externe (ici une image), et je l'ai caché avec un display:none.

    Je te laisse regarder le résultat final sur http://anthem.tmkfrench.fr/test.html

    Je te remercie énormément, car tu m'as permis de beaucoup avancer dans mon projet, me permettant d'intégrer de nouvelles fonctions que je trouve primordiale.

    Je laisse le sujet ouvert au cas ou tu aurais des conseil d'optimisation du code. Sinon dis-le moi je le passerai en résolu.

    Encore merci.

  11. #11
    Membre émérite
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 340
    Par défaut
    Bonjour,
    Citation Envoyé par TMKFrench Voir le message
    Je ne sais pas pourquoi mais je me retrouvais avec un fichier vide ( avec seulement [] ), malgré le fait que listecookie soit en variable globale. En la retournant en fin de fonction plus de problème.
    La version initiale aurait dû fonctionner, étrange oui.
    Sinon, les variables globales, c'est pratique, mais il est généralement préférable de ne pas trop en utiliser.
    De plus, en principe, les variables locales devraient être plus rapides d'accès, mais bon, je ne l'ai pas vérifié en js et il s'agit sans doute de micro-optimisations.

    Citation Envoyé par TMKFrench Voir le message
    Le coté esthétique du bouton Ouvrir un fichier
    Ca a toujours été un problème.
    Je n'ai pas regardé quelles étaient les possibilités de personnalisation CSS à l'heure actuelle.
    Je crois qu'avant c'était plus compliqué de le remplacer par une image car on ne pouvait pas utiliser de fonction click sur ce type d'élément, du moins pas sur tous les navigateurs.

    Citation Envoyé par TMKFrench Voir le message
    Je te laisse regarder le résultat final sur http://anthem.tmkfrench.fr/test.html
    ...
    Je laisse le sujet ouvert au cas ou tu aurais des conseil d'optimisation du code.
    Je n'ai pas regardé le code, mais j'ai testé et c'est bien ça fonctionne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer l'opacité d'une image
    Par noussa_nouha dans le forum Android
    Réponses: 1
    Dernier message: 19/12/2011, 19h04
  2. [CS4] Changer l'opacité d'un objet juste avant qu'il ne s'affiche
    Par 123quatre dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 20/10/2010, 20h11
  3. [CSS 2.1] Changer l'opacité d'une cadre, sans toucher à son texte
    Par Otyugh dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 16/04/2010, 15h43
  4. Réponses: 3
    Dernier message: 18/02/2010, 17h49
  5. Réponses: 4
    Dernier message: 31/07/2006, 16h18

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