Résolu [Javascript] Agir dans Popup après fermeture de la fenetre mère

Résolu [Javascript] Agir dans Popup après fermeture de la fenetre mère - HTML/CSS - Programmation

Marsh Posté le 09-09-2006 à 04:11:21    

Salut à tous,
 
j'utilise sur mon site un système de popup pour lancer un lecteur mp3 flash, ceci permet de continuer la navigation sans couper la musique.
 
le système fonctionne bien lorsque je commande la popup depuis la page mère :
je peux lancer des morceaux et en ajouter à la playlist.
 
pour cela j'utilise un code simple de ce type :
 

Code :
  1. <script type="text/javascript">
  2.  <!--
  3.  function Jouer(idmp3) {
  4.  lect=window.open('lecteur.php?idmp3='+idmp3, "fenetre", "width=400,height=200,scrollbars" );
  5.  }
  6.  function Ajouter(idmp3) {
  7.  lect.message2JavascriptToFlash(idmp3);
  8.  }
  9.  //-->
  10. </script>


 
Le problème se pose lorsque je quitte la page mère : je n'ai plus accès à la fenetre popup, je ne peux donc plus ajouter de morceaux a la playlist.
 
Ma question est donc comment réacquérir ou comment avoir de nouveau accès à la popup.
 
Merci pour votre aide.


Message édité par BaDaBoOm le 10-09-2006 à 21:52:19
Reply

Marsh Posté le 09-09-2006 à 04:11:21   

Reply

Marsh Posté le 09-09-2006 à 07:10:32    

up

Reply

Marsh Posté le 09-09-2006 à 11:22:25    

up

Reply

Marsh Posté le 09-09-2006 à 17:50:05    

up


Message édité par BaDaBoOm le 09-09-2006 à 17:52:39
Reply

Marsh Posté le 10-09-2006 à 00:25:35    

du calme sur les ups :o
 
en gros: tu peux plus.
 
donc tu dois revoir ton design, comme par exemple ajouter le gestionnaire de playlist au popup.

Reply

Marsh Posté le 10-09-2006 à 09:21:36    

nargy a écrit :

en gros: tu peux plus.


S'il supprime sont dernier message et qu'il en met un autre après normalement il peut. [:airforceone]  
Après j'ai jamais essayé. :D


Message édité par CNeo le 10-09-2006 à 09:22:06
Reply

Marsh Posté le 10-09-2006 à 10:23:19    

ben, le problème est que la fenêtre parente est fermée, le navigateur va empêcher de toutes façons à toute autre fenêtre qu'une fenêtre parente de modifier le popup -- question sécurité.

Reply

Marsh Posté le 10-09-2006 à 13:33:42    

Bon, en fait c'est tout à fait possible de relier deux fenetres, pourvu qu'elles soient préparées toutes les deux avec un mécanisme de callback.
 
test1.htm :


<html>
 <head>
  <script>
var lect;
 
function NewWin() {
 lect = window.open('popup.htm','fenetre','');
}
 
function ChangePopup() {
 lect.document.getElementById('toto').value = "Interaction Page1 Ok";
}
  </script>
 </head>
 <body>
  Page 1<br/>
  <input type="button" onclick="NewWin()" value="Ouverture PopUp"/><br/>
  <input type="button" onclick="ChangePopup()" value="Agir sur la popup"/>
  <br/><br/>
  <a href="test2.htm">Page 2</a>
 </body>
</html>


 
popup.htm :


<html>
 <head>
  <script>
function attachMe() {
 window.opener.DeclarationPopup(window);
  document.getElementById('link').innerHTML = "Cette page est maintenant liée à la popup";
}
  </script>
 </head>
 <body>
  Popup<br/>
  <input type="text" id="toto" value="Pas de texte"/>
  <input type="button" onclick="attachMe();" value="Lier à test2.htm"/><br/>
  <div id="link"></div>
 </body>
</html>


 
test2.htm :


<html>
 <head>
  <script>
var lect;
 
function DeclarationPopup(popup) {
 lect = popup;
 document.getElementById('link').style.display = "block";
}
 
function ChangePopup() {
 lect.document.getElementById('toto').value = "Interaction Page2 Ok";
}
  </script>
 </head>
 <body>
  Page 2 - Cette page n'est pas liée à la popup<br/>
  <div id="link" style="display:none">
   Cette page est maintenant liée à la popup<br/>
   <input type="button" onclick="ChangePopup()" value="Agir sur la popup"/>
  </div>
 </body>
</html>


 
Oky, maintenant quelques explications :
 
- La page 1, c'est la fenetre parente qui va ouvrir la popup. Elle peut naturellement agir sur la popup.
- Ensuite si tu vas sur la page 2 (test2.htm), tu n'a à priori aucun accès à la popup. Il faut donc qu'elle déclare son existence à test2.htm.
- En cliquant sur 'Lier à test2.htm', les deux pages sont reliées et tu peux de nouveau agir sur la popup.
 
Ensuite, tu peux améliorer tout ca pour que le visiteur n'ait pas à cliquer sur un bouton pour réactiver quoique ce soit. Avec des onLoad, onUnload, setTimeout, etc...ca devrait être possible.


---------------
Sonnerie polyphonique - Sonnerie Hi-Fi - Sonnerie Ultrason  
Reply

Marsh Posté le 10-09-2006 à 15:32:58    

ok merci bien sho320 !!
 
je n'ai pas testé ta solution sho320 mais voici comment j'ai fais :
 

Code :
  1. <script type="text/javascript">
  2.  <!--
  3.  function Jouer(idmp3) {
  4.  corail=window.open('lecteur.php?idmp3='+idmp3, "fenetre", "width=400,height=200,scrollbars" );
  5.  }
  6.  function Ajouter(idmp3) {
  7.  corail=window.open('', "fenetre", "width=400,height=200,scrollbars" );
  8.  corail.message2JavascriptToFlash(idmp3);
  9.  }
  10.  //-->
  11.  </script>


 
Il m'a suffit de réouvrir la fenetre sans déclarer ce qu'elle contient dans la fonction Ajouter, ainsi n'importe quelle page reprend le contrôle du lecteur mp3.
 
Ceci marche sous ie6 et firefox.
 
Si ca ne marche plus sous ie7 je testerais la solution de sho320.
 
a+


Message édité par BaDaBoOm le 10-09-2006 à 15:45:42
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed