11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'aimerais afficher du code html (formulaire) dans une petite fenêtre qui s'ouvre, sans barre d'adresse ni contour du navigateur, comme celle de alert().

alert() n'étant pas approprié pour inclure du html, j'utilise cette fonction:


var new_fen = function(){
window.open("page.php", "cible", "width=300, height=300");
}


Déclenchée par :

<p onclick="javascript:new_fen();" >Creer miniature</p>

Que faire pour avoir un pop-up comme décris plus haut ? Smiley smile
Modifié par Tchernobyl (23 Jul 2011 - 19:13)
paolo a écrit :
Tu cherches à créer une fenêtre modale. Tu trouveras plein de tutos, comme celui de développez par exemple.


Salut, c'est exactement ce que j'avais en tête (bien vu Vaxillart également).

En fait j'ai un script similaire à facebook permettant la création d'une miniature en faisant glisser la photo dans un cadre, et j'aimerais l'afficher dans une fenêtre "à la facebook" :

http://patternry.com/static/imagecache/images/examples/Facebook_-_Form_Overlay_detail_max.png

Par contre je connais pas trop le jQuery Smiley confused ... j'ai installer la librairie et fais un essai comme dans l'exemple mais ça prend pas :

Mon action qui permet d'afficher l'overlay :
<p onclick="javascript:new_fen();" >Modifier miniature</p>

Mon JavaScript :
var new_fen = function(){
	$("div#cont").overlay();
}


(où cont est l'id du div qui contient mon formulaire à afficher dans l'overlay).

Comment implémenter ma fonction new_fen() afin que l'overlay s'affiche avec mon code html dedans ? Smiley sweatdrop
Modifié par Tchernobyl (21 Jul 2011 - 01:56)
paolo a écrit :
SI tu lis le tuto, tout est expliqué. 3 secondes de recherche m'ont permis de trouver du tout cuit: facebox


C'est vrai que je l'ai pas précisé, j'ai testé plusieurs fois un paquet de tutos (dont celui de developpez.com) sur les fenêtres modales mais voici les seuls qui permettent d'appeler une page externe dans la fenêtre modale :
- celui de jQuery Tools - Overlay spécialement pour ouvrir une page externe dans l'overlay : la page s'ouvre dans l'overlay mais mon script de redimensionnement (utilisant Mootools) ne fonctionne pas alors qu'il marche quand la page n'est pas appelée dans une fenêtre modale.
- le tout cuit de Facebox : pareil

J'essaie de raisonner de façon efficace, j'ai 2 pages : celle à partir de laquelle j'ouvre ma fenêtre modale en cliquant sur un bouton, et celle qui contient mon script de redimensionnement. La première fonctionne car elle m'ouvre une fenêtre modale avec le cadre contenant la photo sauf qu'il est impossible de la déplacer dans cadre, la deuxième fonctionne quand elle n'est pas appeler dans une fenêtre modale (déplacement de la photo dans le cadre).

D'où est-ce que peut venir le problème ? Smiley ohwell

PS: Voilà la page que j'essaie d'appeler dans la fenêtre modale, le script marche ne vous embêtez pas avec, c'est peut-être la disposition qui pose problème ? (désolé de la balancer comme ça, si ça peut aider):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>FaceBook Style Cropping</title>
<style>
	*{
		margin:0;
		padding:0;
	}

	#cont{
		width:200px;
		background-color:red;
		text-align:center;
		padding-top:5px;
	}	
	
		#crop-holder { 
			width:50px;
			margin: 0px auto 0px auto;
			border:1px blue solid;
		}
	
			#crop-iholder {  
				height:50px;
				width:50px;
				overflow:hidden;
				cursor:move;
			}

		input {
			font-size:0,5em;
		}
	
</style>
<script type="text/javascript" src="facebook-cropping-mootools_fichiers/mootools-1_002.js"></script>
<script type="text/javascript" src="facebook-cropping-mootools_fichiers/mootools-1.js"></script>

</head>
<body>

<div id="cont">

	<div id="crop-holder">
		<div id="crop-iholder">
			<img style="height: 83px;" id="imgPhoto" src="testmoocrop.jpg">
		</div>
	</div>
	
	<form method="post" action="crop facebox.php">
		<input value="1" id="hdnInpTop" type="hidden" name="cut_from_top">
		<input value="-29" id="hdnInpLeft" type="hidden" name="cut_from_left">
		<input value="Save Thumbnail Version" type="submit">
	</form>
	
</div>

<script type="text/javascript">
//<![CDATA[
var cropImage = function(target, container, coordinateContainer, topCoord, leftCoord){
	var img = $(target);
	var imgSizeRatio = img.getSize().x / img.getSize().y;
	var desiredRatio = (83) / (68);
	if (imgSizeRatio > desiredRatio) {
		img.setStyle('height','83px'); // redimensionnement css à corriger
	}else{
		img.setStyle('width','68px');	
	}
	var myDragScroller = new Drag(container, {
		snap:0,
		style: false,
		invert: true,
		modifiers: {x: 'scrollLeft', y: 'scrollTop'},
		onComplete: function(el){
			var cropCutFromTop = img.getCoordinates($(coordinateContainer)).top;
			var cropCutFromLeft = img.getCoordinates($(coordinateContainer)).left;
				$(topCoord).set('value',cropCutFromTop);
				$(leftCoord).set('value',cropCutFromLeft);

		}
	});
}


window.addEvent('load', function(){ // important do not use domReady since we want the image to be loaded
	document.ondragstart = function (){ // fn cropImage modifie la valeur des input hdnInpTop et hdnInpLeft dés que l'image est déplacée
	return false; 
	}; //IE drag hack 
	cropImage('imgPhoto', 'crop-iholder', 'crop-holder', 'hdnInpTop', 'hdnInpLeft');
	});
//]]>
	
</script>

</body></html>
Je n'ai pas regardé ton code, mais le fait qu'un bout de js ne fonctionne pas sur une fenêtre chargée dynamiquement est en général lié à un problème classique: les événements sont assignés au code html initialement présent dans la page. Si tu ajoutes des éléments par js et que tu veux leur associer des évènements il faut utiliser live par exemple.