11521 sujets

JavaScript, DOM et API Web HTML5

Modérateur
Bonjour,

debutant (tres debutant), en javascript.
j'essaie de me defaire de frames pour passer a une fenetre principale + une "popup".
Mais IE me multiplie ses "#@!" popups.
Avec firefox , je n'ai pas ce probleme, il m'ouvre ma popup et modifie son contenu sans en rouvrir une a chaque modif:

(j'essaie de me faire un mini-editeur style "edit css" mais pour IE (css+html) et surtout sans frame) .
voici le code dans une page html:

<html  >
<head>
<title></title>
<script type="text/javascript" src="do2-page.js"></script>
<style type='text/css'>
</style>
</head   >
<body  >
<script type="text/javascript">
function rfshpopup() {
  message =   document.forms[0].elements["messager"].value;
apercu = window.open('', 'popup', 'height=200, width=150, top=10, left=10, toolbar=no, menubar=no, location=no, resizable=yes, scrollbars=no, status=no');
apercu.document.write(message);
apercu.document.close();
}

function fermer()
{
apercu.window.close();
}
</script>
<FORM  >
<textarea rows="20" name="messager" id="messager" onkeyup="rfshpopup(this.value); "></textarea>
<br>
<a href="javascript:fermer()">Fermer la fenêtre d'aperçu </a>  
</FORM >   

</body></html>


je n'ai vraiment aucune idée de comment, rappeller a IE que la fenêtre est deja ouverte et qu'il faut reecrire le contenu, ou bien au pire refaire usage de cette fenêtre deja ouverte ??

si ce n'est pas possible, je garderais l'option frame.


ps: because ie , je suis deja passer de l'option iframe(ou le formulaire n'est pas necessaire) a frame +formulaire (pour rendre possible l'edition css sous IE) et maintenant l'option popup me semble la meilleur.
Modifié par gcyrillus (15 Oct 2005 - 22:06)
Bonjour, je pense que tu devrais garder une variable globale...

Exemple :

var pop = null;
function ouvrirPopup () {
if (!pop || pop.closed) pop = window.open(...);
pop.document.write(...);
}


enfin j'espère que tu vois ce que je pense...
Modérateur
merci de ton interet,
j'ai essayer d'ajouter cette variable "globale"
1. d'en faire une seconde fonction appeller en même temps(avant) que la fonction d'ecriture( rfshpopup(); .
2. de l'integrer dans la fonction d'ecriture ( rfshpopup() ) ).
3. de mettre le script brut entre les balises de script dans l'entete du document.
4. d'autres façons truc 'idiotes"

en fait, c'est tout a fait ce que je ne comprend pas et ne sait pas faire, comment garder une variable "globale aussi longtemps que la fenêtre est ouverte (si en plus je pouvais avoir une idée de comment la garder apres un refresh) ... peut-etre un truc du coté des cookies ou sessions ? mais si on peut s'en passer, je prefere ....(c'est pareil, j'ai pas encore essayer avec js )
désolé de mon ignorance et maladresse Smiley confused
Modérateur
merci, de cette info,
voila ce que j'ai fait, qui ne change rien au resultat:

<html >
<head>
<title></title>
<script type="text/javascript">
function initapercu() {
var apercu=null;
}

function rfshpopup() {
message = document.forms[0].elements["messager"].value;
if (!apercu ) var  apercu = window.open('', 'popup', 'height=300, width=850, top=0, left=0, toolbar=no, menubar=yes, location=no, resizable=yes, scrollbars=no, status=no');
;
apercu.document.write(message);
apercu.document.close();
}

function fermer()
{
apercu.window.close();
var apercu=null;
}
</script>
<style type='text/css'>
</style>
</head >
<body onload="initapercu()">

<FORM >
<textarea rows="20" name="messager" id="messager" onkeyup="rfshpopup(this.value); "></textarea>
<br>
<a href="javascript:fermer()">Fermer la fenêtre d'aperçu </a>
</FORM >

</body></html>


IE m'ouvre toujours une nouvelle fenetre a chaque fois !
Mais la ou je ne comprend pas, c'est que en ouvrant cette page , et en recopiant le code de la page elle même dans le textarea,
Ce qui provoque donc une copie/clone de la page dans la popup, celle ci ne crée pas une autre popup, mais elle "s'ecrit" sur elle même (ff et IE ont alors le même comportement )!


<edit> Ce probleme ne semble apparaitre que sur mon pc, apres test du script sur d'autre machine avec IE, il n'ya aucun souci de popup qui se multiplie !!!?!!!
je met donc le topic en resolu

(merci Quentin)
Modifié par gcyrillus (15 Oct 2005 - 22:04)