11548 sujets

JavaScript, DOM et API Web HTML5

hello....

voila mon code du lien qui devrait ouvrir une fenetre mais qui ne marche pas et je vois pas du tout pourquoi car il me semble que c'est exactement le meme code que dans un tuto que j'ai choppé:

<a href="a_panier.php"  onclick="javascript:window.open(this.href); return false;" style="text-align:right" >



Peut etre qu c'est du a mon navigateur????Mais pourtant je peux le faire sur d'autre site..... Smiley rolleyes

merci d'avance pour l'aide
Modifié par nath-0-0 (05 Apr 2006 - 17:28)
Bonjour,

Je suppose que si tu ne veux pas utiliser l'attribut target, c'est pour des raisons de validation avec un doctype strict, je me trompe ? Dans ce cas, la FAQ traite le sujet ici et propose différentes alternatives (dont l'utilisation du javascript que tu cites).

Si ce point de validation n'est pas important pour toi, ou si tu utilises un doctype transitionnel, tu peux utiliser l'attribut target sans problème Smiley cligne .
Modifié par Jihel (10 Feb 2006 - 14:05)
merci pour ta reponse...
Oui j'aimerais eviter d'utiliser le target blank...

Mais ce que je ne comprends pas c'est que c'est exactement le meme code que dans les tutos et que la, cela ne fonctionne pas....
Je vois vraiment pas pourquoi.... Smiley eek
Sans remettre en cause ta volonté de valider ta page, si target a été déclassé en mode strict c'est parce qu'il va à l'encontre du concept même de la libre navigation. AMHA tu ferais mieux de changer de doctype plutôt que de conserver le strict et contourner ses règles Smiley ohwell .

Ceci dit, si tu tiens toujours à ouvrir ta page dans une nouvelle fenêtre sans target, voici un tuto qui te permet de le faire le plus proprement possible.
Bonjour,

Questions naïves, en chaîne :
- perdre X heures sur des forums, des liens, etc. pour ne pas employer la DTD transitional ?
- oui, d'accord. Si ne pas employer cette DTD rapporte quelque-chose. Ou si l'employer coûte quelque-chose. Je veux dire, quelque-chose de concret, ou de potentiel, mais pas dans l'ordre de l'idéologique-je-fais-standard-je-fais-strict je-sais-pas-pourquoi-mais-c'est-comme-ça

Il peut y avoir d'excellentes raisons de ne pas employer une DTD transitional à cause d'un tareget blank. Il peut aussi y avoir très souvent un choix de principe irrationnel sans aucune raison de fond... Smiley cligne

Bon j'arrête de tirer sur le cadavre... Smiley rolleyes Smiley lol

(Accessoirement : ce temps-là pourrait être consacré à faire du contenu, de l'accessibilité, de la qualité...)

Sinon, piur le code ci-dessus, se référer à http://openweb.eu.org/articles/popup/ , et penser que le résultat dépendra aussi des options et surcouches du navigateur...
Modifié par Laurent Denis (10 Feb 2006 - 14:44)
Ça, c'est un de mes trolls préférés. Smiley lol

Ce que les gens qui défendent la non ouverture de fenêtre sur un document strict oublient systématiquement de dire, c'est qu'il y a un module spécifique de CSS3 qui devrait permettre l'ouverture de nouvelles fenêtres et même de nouveaux onglets, y compris dans un document avec une DTD strict.

S'il n'y a plus d'attribut target dans le (X)HTML strict, c'est à mon avis parce que ça concerne plus la présentation du document que le document lui-même.

Cela dit, CSS3 offrira un mecanisme (la feuille utilisateur) qui permettra d'interdire l'ouverture de nouvelles fenêtres selon le choix de l'utilisateur, ce qu'un script ne peut pas permettre.
Oui, ce que beaucoup de gens oublient, c'est que l'enjeu du passage d'un attribut HTML (target) à une propriété CSS.. c'est la CSS utilisateur, ce sont les réglages choisis par l'utilisateur dans son interface, c'est la gestion la plus économique pour tous, gérée via les CSS user, et tout ce qui s'en suit pour l'accessibilité et l'ergonomie.

Ah... ne plus avoir à se demander si on ouvre ou non dans de nouvelles fenêtres ! Smiley smile On proposera un comportement, qui n'aura aucune chance d'être forcé chez l'utilisateur... ça remet les idées en place Smiley cligne
Modifié par Laurent Denis (10 Feb 2006 - 15:00)
Lanza: les gens qui refusent l'ouverture d'une nouvelle fenêtre en Strict n'oublient pas de dire quelque-chose. Ils tirent juste la pleine conséquence des choses : nous avons le choix entre "ne pas s'en servir pour l'instant" (XHTML ou HTML strict) ou ""s'en servir au plus économique, les problèmes éventuellement créés étant égaux par ailleurs" (XHTML et HTML transitional) Smiley cligne

Bien-sûr, on peut aussi ne pas s'en servir en transitional...
Modifié par Laurent Denis (10 Feb 2006 - 15:20)
Pour revenir au problème de départ, je te conseille la correction suivante :

<a href="a_panier.php" onclick="return !window.open(this.href);" style="text-align:right" >

Il n'y a notamment pas besoin de la mention javascript: car dans un évènement onxxx, c'est forcément du ajvascript.
Modifié par QuentinC (10 Feb 2006 - 20:26)
Olivier a écrit :
Un exemple sur ta page nous aiderait.

As-tu bien activé le JavaScript ?


oui d'ailleurs lorsqu' a la place de open "window.open(this.href)" je mets une alert, cela fonctionne....

voici le code de ma page mais je pense pas que cela avance a grd chose,
En plus c'est looooooooooooooooong,cela ne doit pas donné tres envie
Smiley ohwell

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Language" content="fr" />
<link rel="stylesheet" href="../include/css/nikita_style.css" media="screen" type="text/css" />
<link rel="stylesheet" href="../include/css/nikita_style.css"  media="print" type="text/css"/>

<script language="JavaScript">
<!--

function SymError()
{
  return true;
}

window.onerror = SymError;

var SymRealWinOpen = window.open;

function SymWinOpen(url, name, attributes)
{
  return (new Object());
}

window.open = SymWinOpen;

//-->
</script>

<script type="text/javascript" src="../include/js/java.js"></script>

<title>Liste des biens</title>

<noscript>Votre navigateur ne lit pas le Javascript, 
veuillez l'activer pour une utilisation optimale du site</noscript>
</head>

<body>
<br>h_page1<div id="conteneur">	
<form  method="post" name="a_lbienmain" id="a_lbienmain" action="a_lbienmain.php?pr=rs">
	<input type="hidden" name="h_page" id="h_page" value="2"/>
	<input type="hidden" name="h_order" id="h_order" value=" surfaceHabitable DESC"/>
	<input type="hidden" name="h_maxRow" id="h_maxRow" value="6"/>
	<input type="hidden" name="h_minRow" id="h_minRow" value="6"/>
		<!-- menu de toutes les feuilles"""""""-->

	
	<h1 id="header">
	<img src="../image/header/header22.gif">	</h1>
	<ul id="menu">
		<li>
			<a href="../pres/a_pres.php">Présentation</a>
		</li>
		<li>

			<a href="../annonce/r_simple.php" >Nos annonces</a>
		</li>
		<li>
			<a href="../agence/a_agence.php" >Nos agences</a>		
		</li>
		<li>
			<a href="../ml/a_ml.php" >Mailing List</a>			
		</li>	
	</ul>

	<br />
	<!-- partie recherche de gauche des des pages de a_lbienmain a_detail et a6inscritml"""""""-->
<div id="rechercheGauche">
<h2> Votre recherche</h2>
	<div class="contenurechG">
		<label for="Tbien">Type de bien</label><br />
						<input type="checkbox" name="ck_appart" id="ck_appart" value='1' checked='checked'/>Appart.
				<input type="checkbox" name="ck_loft" id="ck_loft" value='2' checked='checked'/>Loft
				<input type="checkbox" name="ck_duplex" id="ck_duplex" value='3' checked='checked'/>Duplex
				<input type="checkbox" name="ck_maison" id="ck_maison" value='4' checked='checked' />Maison
			</div>

	<div class="contenurechG">
	<table class="tableRechG">
	<tr>
		<td class="td40pc">
			<label for="cb_piecemin" >Nb pièces minimum</label>
		</td>
		<td class="td70pc">
						<select name="cb_piecemin" class="efRecherche3">

					<option value="1"  selected='selected' >1</option>
					<option value="2"  >2</option>
					<option value="3"  >3</option>
					<option value="4"  >4</option>
					<option value="5"  >5 et +</option>
				</select>

				</td>
	</tr>
	<tr>
		<td class="td40pc">
			<label for="ef_surfacemin">Surface minimum</label>
		</td>
		<td class="td70pc">
			<input type="text" class="efRecherche2Nbr" name="ef_surfacemin" id="ef_surfacemin" value="" /> m²

		</td>
	</tr>
	<tr>
		<td class="td40pc">
			<label for="ef_prixmax">Prix maximum</label>
		</td>
		<td class="td70pc">
			<input type="text" class="efRecherche2Nbr" name="ef_prixmax" id="ef_prixmax" value=""  /> euros
		</td>

	</tr>
	</table>
	</div>
	<div class="contenurechG">
		<label for="cb_asc" >Ascenseur indis. à partir du</label>
						<select name="cb_asc" class="efRecherche2">
					<option value="1" >1er</option>

					<option value="2" >2ème</option>
					<option value="3" >3ème</option>
					<option value="4" >4ème</option>
					<option value="5" >5ème</option>
					<option value="6" >6ème</option>

					<option value="7" >7ème</option>
					<option value="F"  selected='selected'>Facultatif</option>
				</select> étage	
			</div>
	<fieldset id="ville">
	<div class="contenurechG" >
		<label for="ville" >Ville, département ou code postal</label><br />

			<input type="text" class="efRecherche2" name="ef_ville1" id="ef_ville1" value=""  />
			<input type="text" class="efRecherche2" name="ef_ville2" id="ef_ville1" value=""  />
			<input type="text" class="efRecherche2" name="ef_ville3" id="ef_ville1" value=""  />
	</div>
	<div class="contenurechG" >
			<input type="text" class="efRecherche2" name="ef_ville4" id="ef_ville1" value=""  />
			<input type="text" class="efRecherche2" name="ef_ville5" id="ef_ville1" value=""  />
			<input type="text" class="efRecherche2" name="ef_ville6" id="ef_ville1" value=""  />		
	</div>

	</fieldset>
	<div id="critereMod"><a href="javascript:CallSubmitGet('a_lbienmain','a_lbienmain.php?pr=ra');" class="lien">+ de critères</a><span><input type='submit'  class='StandardButtonSmall' name='pb_modifier' id='pb_modifier' value='Modifier'/></span></div>		<h3 id="alertemail">
		<a href="../ml/a_inscriml.php?pr=rs">Enregistrer la recherche et Créer une alerte mail</a>
	</h3>
</div>
</form>

<div id="main">

	<div class="trier">
		Trier par :
		<a href="a_lbienmain.php?pr=rs&Order=triPrix">Prix</a> - 
		<a href="a_lbienmain.php?pr=rs&Order=triSurface">Surface</a> - 
		<a href="a_lbienmain.php?pr=rs&Order=triDate">Date</a>
	</div>
	<div class="navig" style="position: relative;">

		<span class="page"> Page 2/2	</span>	

					<a href="a_lbienmain.php?pr=rs&Action=first&Order=triSurface&Page=2">
				<img src="../image/b_firstpage.gif" alt="Premier"  title="Aller au d&eacute;but"/>
			</a> 
			<a  href="a_lbienmain.php?pr=rs&Action=prev&Order=triSurface&Page=2">
				<img src="../image/b_prevpage.gif" alt="Pr&eacute;c&eacute;dant"  title="Aller au Pr&eacute;c&eacute;dant"/>
			</a>
				Paris-Appartements
			
		<span class="prix">

			<a href="javascript:window.print()">
				<img src="../image/printer.gif" alt="Imprimer"  title="Imprimer tous les biens"/>
			</a>
			<!-- onclick="javascript:window.open(this.target='_blank'-); return false;" -->
			[#orange]<a href="a_panier.php"  onclick="javascript:return !window.open(this.href);" style="text-align:right" >[/#]
				<img src="../image/cart_edit.gif" height="18px"  width="18px" alt="Panier" title="Voir la s&eacute;lection du panier"/>
			</a>
		</span>
	</div>

	<div class="bien"><h3 style="position: relative;">Bien à vendre ref n°111 <span class="prix"> 500000 €</span> </h3><div class="photo"><img src="../image/photob.gif" /></div><br /><span class="titreBienList">super loft- koko-</span><br /><ul class="bienList"><li>75009</li><li>0 m²</li><li>2 pièce(s)</li><li>0 Chambre(s)</li></ul><h4 style="position: relative;"><a href="a_detail.php?idBien=111&pr=rs&Page=2" style="text-align:right" > <img src="../image/application_view_detail.gif" />Détails...</a><span class="prix"><a href="javascript:window.print()"><img src="../image/printer.gif" alt="Imprimer"  title="Imprimer cette fiche"/> </a><a href="a_lbienmain.php?idBien=111&pr=rs&Action=Aj&Order=triSurface&Page=2" ><img src="../image/cart_put.gif" height="18px"  width="18px" alt="Panier" title="Ajouter au panier"/> </a><a href="../ml/a_mailami.php?idBien=111&pr=rs" ><img src="../image/email_go.gif"  alt="E-mail" title="Envoyer &agrave; un ami"/> </a></span></h4></div><!--bien -->	<div class="navig">

					<a href="a_lbienmain.php?pr=rs&Action=first&Order=triSurface&Page=2">
				<img src="../image/b_firstpage.gif" alt="Premier"  title="Aller au d&eacute;but"/>
			</a> 
			<a  href="a_lbienmain.php?pr=rs&Action=prev&Order=triSurface&Page=2">
				<img src="../image/b_prevpage.gif" alt="Pr&eacute;c&eacute;dant"  title="Aller au Pr&eacute;c&eacute;dant"/>
			</a>
				Paris-Appartements
			
	</div>
	
<br />
</div><!--Main -->

</div>	<!--conteneur -->

</body>
</html>
<!--

-->
<script language="JavaScript">
<!--
var SymRealOnLoad;
var SymRealOnUnload;

function SymOnUnload()
{
  window.open = SymWinOpen;
  if(SymRealOnUnload != null)
     SymRealOnUnload();
}

function SymOnLoad()
{
  if(SymRealOnLoad != null)
     SymRealOnLoad();
  window.open = SymRealWinOpen;
  SymRealOnUnload = window.onunload;
  window.onunload = SymOnUnload;
}

SymRealOnLoad = window.onload;
window.onload = SymOnLoad;

//-->
</script>
C'est certain je ne sais pas vraiment pourquoi, je fais du strict.
Enfin disons que je veux pas faire a tout prix du strict, mais c'est tout de meme a cela qu'on tend, non?
Et vu que je developpe mon site depusi le debut, pourquoi ne pas faire directement du strict?

Enfin peut etre que je m'embete pour rien, mais lorsque j'ai commencé a développer mon site, je n'avais encore jamais entendu parler des standards.
Je suis arrivée par hasard sur alsacreations et de fil en aiguille, j'ai lu des choses sur les standards et j'ai voulu essayer de faire au mieux.
Mais maintenant c'est certain je n'ai pas vraiment un retour de tout cela.
Je me rends pas compte vraiment du benefice que j'ai a codé strict plutot que transitionel.
c'est comme lorsqu'on dit qu'il faut enlever la germe de la gousse d'ail pour que cela soit plus digest, je ne vois pas de difference avec ou sans Smiley cligne .
Mais tant qu'a faire autant l'enlever,cela ne peut pas etre pire...

Bon ceci

a écrit :
Oui, ce que beaucoup de gens oublient, c'est que l'enjeu du passage d'un attribut HTML (target) à une propriété CSS.. c'est la CSS utilisateur, ce sont les réglages choisis par l'utilisateur dans son interface, c'est la gestion la plus économique pour tous, gérée via les CSS user, et tout ce qui s'en suit pour l'accessibilité et l'ergonomie.


mais dans ce cas la, ou l'utilisateur choisi de ne pas ouvrir de fenetre, comment reviens t'il a la page precedente????simplement en cliquant sur la fleche de son navigateur??
et cela ne pose pas de probleme??Cela ne me semble pas génial....
L'utilsateur ne va pas chercher sur sa page un boutton retour?


Bon ceci dit, je ne vois pas vaiment pourquoi on fqit tant d'histoire autour de ces ouvertures de fenetres....surement a cause de la mauvaise utilisation qu'en a fait certains site....
Mais une ouverture de fenetre dans un site, comme par exemple pour voir la selection du panier,cela ne me semble pas derangeant....???

Enfin bref, dur de savoir ce qui est exagere ou pas....