11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

je débute en javascript et j'aimerais faire une chose assez compliqué je pense, voici mon probleme:

Je souhaite faire une carte interactive de la france en utilisant le script raphael.js. J'ai suivi ce tuto

http://proov.fr/html/creer-une-carte-de-france-cliquable-en-html5-svg/

mais mon souci c'est que j'aimerai bien ouvrir une pop up fancybox lorsque que je clique sur un département pour pouvoir afficher des information en texte concernant ce département.

Est ce que cela est possible ? si oui quelle code doit ajouter dans le script

"http://lab.proov.fr/carte_france_svg/js/script.js"

Merci d'avance pour vos réponses; je suis totalement largué depuis 3 jours Smiley lol
salut...

Et tu as déjà essayé quoi ????


sinon je pense que ceci devrait fonctionner :

st[0].click() = function () {
              ici tu met la fonction fancybox
              $.fancybox();
          };


tu place tout ça dans script.js

juste après les fonctions de hover et de out
Merci à vous pour vos réponses.

Alors j'ai essayé pchlj la méthode que tu m'as dite :

voici le script.js :
 var current = null;
 
   for (var state in fr) 
   {
	     fr[state].scale(1, 1,0,0);
	     fr[state].color = "white";
	       (function (st, state) {
	           st[0].style.cursor = "pointer";
	           st[0].onmouseover = function () {
	               current && fr[current].animate({fill: "white"}, 200);
	               st.animate({fill: st.color, stroke: "#9D9D9D"}, 200).toFront().scale(1.3,1.3).data('coul', st.attr('fill'));
	               paper.safari();
	               
	           };
	           st[0].onmouseout = function () {
	        	   var ratio=1/1.3;
	               st.animate({fill: st.data('coul'), stroke: "#004887"}, 200).scale(ratio,ratio);
	               paper.safari();
	           };
		    	st[0].onclick = function () {
		    	document.getElementById(state).style.display = "block";
				$('.fancybox').fancybox();
                 };
	           
	       })(fr[state], state);
	     
   	}
 }
 


et ensuite dans mon code html :
<div id="canvas_france">
  	<a class="fancybox" id="departement67" href="#inline1" title="Lorem ipsum dolor sit amet"></a>
    <div id="inline1" style="width:400px;display: none;">
		<h3>Etiam quis mi eu elit</h3>
		<p>
			Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis mi eu elit tempor facilisis id et neque. Nulla sit amet sem sapien. Vestibulum imperdiet porta ante ac ornare. Nulla et lorem eu nibh adipiscing ultricies nec at lacus. Cras laoreet ultricies sem, at blandit mi eleifend aliquam. Nunc enim ipsum, vehicula non pretium varius, cursus ac tortor. Vivamus fringilla congue laoreet. Quisque ultrices sodales orci, quis rhoncus justo auctor in. Phasellus dui eros, bibendum eu feugiat ornare, faucibus eu mi. Nunc aliquet tempus sem, id aliquam diam varius ac. Maecenas nisl nunc, molestie vitae eleifend vel, iaculis sed magna. Aenean tempus lacus vitae orci posuere porttitor eget non felis. Donec lectus elit, aliquam nec eleifend sit amet, vestibulum sed nunc.
		</p>
	</div></div>


sinon Paolo j'ai lu la doc Raphael mais je t'avoues que je comprends pas grand chose, je débute vmt en javascript et j'essaye de bidouiller mais sans succès Smiley sweatdrop

En ts cas merci pour vos rép je continue à essayer de trouver la soluce Smiley lol

si jms vous la voyez un ptit post
Commence en insérant la ligne suivante juste après le for (var state in fr)

fr Smiley state .click(function(){alert('fancybox');});

(y'a une nouvelle astuce pour insérer des square brackets ?)
Modifié par paolo (11 Jul 2012 - 22:57)
Ok je viens de rentrer cette ligne mais le souci c'est qu'il me marque fancybox dans une boite alert javascript Smiley eek

Y'a surement un truc que je dois mettre en dans le code html pour pouvoir afficher la fancybox lors du clique sur le département Smiley smile
je viens de voir sur des forums qu'il faut rajouter
document.getElementById(state) donc les id des département pour accéder aux éléments XHTML
Oui, c'est le comportement attendu de alert('fancybox')
Le but c'était de te montrer une syntaxe qui fonctionnait.
Ok ok thanks je comprends un peu mieux l’écriture en javascript pour les évents.

Bon je vais continuer de chercher Smiley lol merci bcp mais pour l'instant c'est galère.
Bon je block toujours Smiley decu

voici mon code script.js
var current = null;
 
   for (var state in fr) 
   {
	      
	
		 fr[state].scale(1, 1,0,0);
	     fr[state].color = "white";
	       (function (st, state) {
	           st[0].style.cursor = "pointer";
	           st[0].onmouseover = function () {
	               current && fr[current].animate({fill: "white"}, 200);
	               st.animate({fill: st.color, stroke: "#9D9D9D"}, 200).toFront().scale(1.3,1.3).data('coul', st.attr('fill'));
	               paper.safari();
	               
	           };
	           st[0].onmouseout = function () {
	        	   var ratio=1/1.3;
	               st.animate({fill: st.data('coul'), stroke: "#004887"}, 200).scale(ratio,ratio);
	               paper.safari();
	           };
		    	st[0].onclick = function () {
		    	document.getElementById(state).style.display = "block";
 				paper.safari();
                  };
	     		
	       })(fr[state], state);
	     
   	}
 }



et voici mon code html

<!DOCTYPE html>
<html><head>
	<title>test</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

	<!-- Add jQuery library -->
	<script type="text/javascript" src="index_fichiers/jquery-1.js"></script>

	<!-- Add mousewheel plugin (this is optional) -->
	<script type="text/javascript" src="index_fichiers/jquery_003.js"></script>

	<!-- Add fancyBox main JS and CSS files -->
	<script type="text/javascript" src="index_fichiers/jquery_002.js"></script>
	<link rel="stylesheet" type="text/css" href="index_fichiers/jquery.css" media="screen">

	<!-- Add Button helper (this is optional) -->
	<link rel="stylesheet" type="text/css" href="index_fichiers/jquery_003.css">
	<script type="text/javascript" src="index_fichiers/jquery_005.js"></script>

	<!-- Add Thumbnail helper (this is optional) -->
	<link rel="stylesheet" type="text/css" href="index_fichiers/jquery_002.css">
	<script type="text/javascript" src="index_fichiers/jquery.js"></script>

	<!-- Add Media helper (this is optional) -->
	<script type="text/javascript" src="index_fichiers/jquery_004.js"></script>

	<script type="text/javascript">
			$(document).ready(function() {

	/* This is basic - uses default settings */
	

	
	$("a#departement67").fancybox({
		'hideOnContentClick': true
	});

		});
	</script>
	<style type="text/css">
		.fancybox-custom .fancybox-skin {
			box-shadow: 0 0 50px #222;
		}
		 #departement67{
                display: block;
                height: 400px;
                overflow: auto;
                position: absolute;
                right: 400px;
                top: 0;
                width: 300px;
            }
	</style>
      <script src="raphael-min.js" charset="utf-8" ></script>
  <script src="script.js" charset="utf-8" ></script>
</head>
<body>
	
	
 <div id="canvas_france">
 <a id="departement67" href="#data">inline</a>
 <div style="display:none"><div id="data">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>
 	</div>

</body>
    </html>


La fancybox apparait seulement apres avoir cliquer sur inline cad la ou le #id fait apparaitre le texte par rapport à son css.

Bref je m'en sors plus, je suis sur ça doit etre un truc bien con mais je trouve pas , si qqun voit comment lancer la fancybox en cliquant direct sur le département ... Smiley lol