[JS] [RESOLU] Ouverture de Popup

Un exemple sera plus parlant : allez sur www.virginmedia.com et regardez comment fonctionne leur player. Le truc notable c’est : quand vous ajoutez un extrait ca ne recharge pas la popup avec le player.

et pourtant : voila le code d’ouverture de leur popup avec player :

popupWin = open( "", "popupMediaPlayer", "width=674,height=570" ); if( !popupWin || popupWin.closed || !popupWin.isAlive ) { popupWin = window.open( 'player', "popupMediaPlayer", "width=674,height=570" ); popupWin.focus(); }

Si je fais la meme chose de mon coté, ma popup se recharge. Je ne pige pas comment ils font pour eviter que la popup se recharge. J’ai bien compris l’idee du open sans url : c’est pour recuperer le window handle de la fenetre portant le meme nom afin de tester sa presence. Ca m’a regler le probleme du changement de page, mais ca reload la popup de mon coté. Pas chez virgin.

COMMENT ILS FONT ??? je viens de paumer une aprem dessus, meme MisterP n’a pas su. Sauriez vous ??? Merci de toute aide, je suis super bloqué.

truc con …
ils ont pas une fonctionnalité coté serveur que tu ne vois pas sur la page de la pop up ?
Un truc comme si c’est la meme ip/session on reload et on rajoute sans que ca se voit ?

bussiere

session surement, pas IP, tu peux rien baser sur l’ip en general, il y a des milliers de personnes derriere des proxys.

AJAX, non ?

Confirmation Ajax :slight_smile: (oui ma réponse n’as aucun intérêt c’est juste pour confirmer…)

ok, vous me sortez le script Ajax qui va bien maintenant ? Car bon meme si j’aime coder, j’ai pas franchement envie de paumer 3jours à pondre un fichu script @lacon. Merci d’avance ^^

Bon… va falloir que je serialise le window handle de window.open (donc js) dans un variable session (donc php) pour le recuperer à chaque chargement (dans un variable js donc). Chouette…

Bon, celui qui arrive à serialiser un window handle et le recup me fait signe. J’ai tenté 200 manieres differentes et je seche. Ajax ou pas, il faut que je passe par là pour avoir une variable ‹ correct › à transmettre. Si je balance mon window handle comme ca, il fait la tete dans mon script coté serveur :slight_smile:

PS : stocker dans le cookie c’est pas une mauvaise idee, encore faut il avoir une serialisation correct :confused:

Mouhahahaha j’ai trouvé. Pas d’ajax, pas de session, du JS only !!

L’idee c’est d’envoyer depuis la popup tous els X secondes le window.self (de la popup) à l’opener qui rafraichit la variable globale contant le handle de la popup : window.opener.rafraichitPopUp(window.self).
Ainsi meme en changeant de page, le handle est rafraichit par la popup et du coup on peut faire un WindowHandle.focus sans faire de open avant (qui rechargeait la popup ce que je voulais pas).

le tout avec des try catch pour eviter les erreurs de loading (si l’opener est en loading, la fonction plante, donc try/catch sur l’envoie du handle).

sur la page principale :

[code]var PopUp = null; //c’est mon handle de popup
var $previousurlpage;
function ouvre_player($urlpage) {
if(PopUp == null || PopUp.closed) {
PopUp=open(‘player-jazz-en-ligne.php’,‘Player’, ‘menubar=no, status=no, scrollbars=no, menubar=no, width=800, height=520’);
window.PopUp.focus();
} else if($previousurlpage != $urlpage) {
PopUp=open(‘player-jazz-en-ligne.php’,‘Player’, ‘menubar=no, status=no, scrollbars=no, menubar=no, width=800, height=520’);
PopUp.focus();//
} else {
PopUp.focus();
}
}

function MetAjourWindow (value) {
PopUp = value;
}[/code]

et dans ma popup :

function MetAjourOpener() { try { window.opener.MetAjourWindow(window.self); } catch (e) {}; setTimeout('MetAjourOpener()',2000); }
ensuite vous faite dans la popup un joli : BLABLABLABLABA

Et ca marche nickouel !