Ouverture d'un popup avec flash depuis une page avec redirection transparente

Soyez le premier à donner votre avis sur cette source.

Vue 58 883 fois - Téléchargée 6 789 fois


Description

Ok, tout d'abord bonjour à toutes et à tous.

Je viens vous parler d'un bug lié à Internet Explorer et Flash qui empêche l'ouverture d'un popup par la méthode traditionnelle javascript:window.open lorsque votre page web est redirigée par une adresse monsite.com ou monsite.fr.st transparente.

En effet, ce problème provient d'un bug au niveau de FLASH.
Plus précisément, il s'agit d'un bug de la méthode GetURL: "javascript:" qui a été signalé uniquement sous les navigateurs IE5 et IE6. En effet, avec ces navigateurs, cette méthode ne fonctionne plus lorsque la séquence FLASH se situe dans une sous-frame (ce qui est justement le principe de la redirection transparente par frameset telle qu'elle fonctionne chez des services comme ulimit.fr ou amen.fr ....)

Pour parer ce problème, une solution existe, il s'agit d'appeler la fonction 'FSCommand' sous flash et de détecter dans le javascript de la page les commandes envoyées par flash (window.open par exemple). C'est un peu long à expliquer. mais cette méthode est très bien commentée à cette adresse : http://www.macromedia.com/support/flash/ts/documents/popup_windows.htm
(en anglais).

En brut voila la manip à effectuer : (voir dans les commentaires pour l'ouverture de multi popups)

Source / Exemple :


Dans un bouton de flash, creez l'action suivante : 
("openWindow" est le nom d'une variable quelconque)

Code:

on (release) {
fscommand("openWindow");
}

Puis il faut publier l'animation sans oublier de cocher l'option "Flash avec fscommand" (menu paramêtres de publication --> onglet HTML --> Modèle : Flash avec FSCommand).

Grâce à cela, Flash crée un fichier html contenant un code javascript qui permettera de detecter la commande voulu, ici "openWindow".
Repêrez dans le HTML la zone ou vous devez inserer le code qui réagira à l'appel flash :

//
// Place your code here...
//

et placez le javascript suivant :

Code:

if(command=="openWindow"){ 
     openNewWindow()
}
function openNewWindow(){
    window.open('popup.htm','','height=200,width=200,left=50,top=10,toolbar=no');
}

Remplacez bien sur les paramêtres après window.open(...,...,...) par les votre. Cette fonction est utile pour IE. Dans le cas de Netscape, la méthode classique marche sans problême.

Conclusion :


En résumé, en cliquant sur le bouton flash un popup s'ouvrira en utilisant la methode :
javascript:window.popup --> pour netscape
fscommand("openWindow"); --> pour internet explorer

petit bémol, FSCommand utilise ActiveX, donc si celle ci est désactivée sur le navigateur d'un visiteur, le popup ne s'ouvrira pas. Mais bon, la probabilité est très réduite.

Si vous avez des remarques, comme dab, défoulez vous. A+

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
5 juin 2009

Bonjour ;
- Toujours dans le but d'ouvrir un popup depuis un bouton flash.
Mon index est chez Amen (avec un frameset) et la frame du milieu pointe sur un espace perso chez FREE (c'est dans celle-ci qu'est mon site en flash avec le fameux bouton pour ouvrir un pop'up...) -

après de nombreux essais, pas de pop'up qui s'ouvre...!
(avec la fscommand)

•Code pour mon bouton flash :
on (release) {
fscommand("openWindow1");
}

•et voici le code dans le fichier html :
<script language="JavaScript">
<!--
var isInternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
// Gérer tous les messages FSCommand d'une animation Flash.
function site-tlc-v2c_DoFSCommand(command, args) {
var site-tlc-v2cObj = isInternetExplorer ? document.all.site-tlc-v2c : document.site-tlc-v2c;
//
{if(command=="openWindow1"){ openNewWindow()}}function openNewWindow(){setTimeout(window.open('popup.htm','',
'height=200,width=200,left=50,top=10,toolbar=no')),0}
//
}
// Hook pour Internet Explorer
if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) {
document.write('<script language="VBScript"\>\n');
document.write('On Error Resume Next\n');
document.write('Sub site-tlc-v2c_FSCommand(ByVal command, ByVal args)\n');
document.write(' Call site-tlc-v2c_DoFSCommand(command, args)\n');
document.write('End Sub\n');
document.write('</script\>\n');
}
//-->
</script>

et

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" id="site-tlc-v2c" width="790" height="590" align="middle">

</object>

mon fichier est en version 7
(faut-il mieux enregistrer en version 8...?)

Tout ça à cause d'Explorer PC !!!

Peut-être que depuis le temps, il y a une meilleur solution ?...

et dire que je vois que certains disent nickel ; c'est donc que ça devrait marcher ?

H E L P !

JL
Messages postés
8
Date d'inscription
mercredi 31 octobre 2007
Statut
Membre
Dernière intervention
9 novembre 2007

Merci beaucoup!!! J'en ai vraiment ***** pour trouver un code qui m'ouvre une popup sur mon clip flash, et j'ai eu du mal à comprendre le code (j'avais pas captée qu'il fallait mettre le code dans le html au niveau "insérer votre code ici"), mais là cela marche nickel avec Firefox. J'ai pas essayé sous IE, mais à mon avis cela devrait marcher. En tout cas merci beaucoup, car même 5 ans après la parution de ce code cela marche nickel!! 10/10.
Messages postés
45
Date d'inscription
lundi 14 novembre 2005
Statut
Membre
Dernière intervention
26 janvier 2011

Salut à touts
Tout d'abord je tiens à préciser que je suis un super novice.
Je tente par tous les moyens de vous suivre mais je planche:
Je voudrais, à partir d'un fla(mon site internet en fla en l'occurence), pouvoir ,d'un bouton, ouvrir une fenetre html de 451px par 451px: Je crée donc un bouton ou j'y integre le code(si j'ai bien compris)

on (release) {
fscommand("openWindow");
}

Cela dit: l'as ou dois je le mettre?
pourquoi un geturl ne suffit pas en precisant que la page venant serait elle codé de sorte a faire 451 par 451?
Pourquoi publier une page contenant mon bouton? et rajouter dedans le reste du code puisque je ne ve plus le bouton dans la popup.?

Vous comprendrez que je suis quelque peu perdu et je reverais que un bon de votre genre puisse me l'epliquer.

Esperant ne pas saouler avec mes questions connes je vous remercie d'avance.
Messages postés
715
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
10 septembre 2009

Lol 3 ans plus tard..... MERCI DE NE PLUS UTILISER CETTE SOURCE ...

Cette source résolvait un bug lié à Internet Explorer, flash player 6 et la gestion des frames... Bug qui a été résolu depuis le player 7 ....

Si vous n'êtes pas dans cette situation, pour ouvrir un popup utilisez la methode classique, javascript:window.open.....

A+
aFaD
Messages postés
2
Date d'inscription
vendredi 30 juin 2006
Statut
Membre
Dernière intervention
30 juin 2006

Alors, j'ai trouvé comme une grande comment faire quand on a plusieurs pop up et plusieurs bouton. Voici l'organisation des codes pour 3 boutons (par exemple...):

<html>
<head>
<title></title>

<script language="JavaScript" type="text/JavaScript">
<!--
function popup1(){
window.open('pagex.html','','height=800,width=600,left=50,top=10,toolbar=no');
}
function popup2(){
window.open('pagexx.html','','height=800,width=600,left=50,top=10,toolbar=no');
}
function popup3(){
window.open('pagexxx.html','','height=800,width=600,left=50,top=10,toolbar=no');
}
//-->
</script>

</head>


<!-- code html //-->


</html>

puis ds le lien flash mettre le code , pour chaque bouton: pour le bouton 1:

on(release){
getURL("javascript:popup1()");

}

pour le bouton 2:

on(release){
getURL("javascript:popup2()");

}

et pour le bouton 3:

on(release){
getURL("javascript:popup3()");

}


Bon le soucis, c'est que du coup on se retrouve avec 3 pop up qui s'ouvrent sur la page... si quelqu'un sait comment finir le code pour qu'elles s'ouvrent les unes après les autres (chacune à leur tour à chaque clic sur un nouveau bouton) ou pour qu'une pop up se ferme quand une autre s'ouvre, je suis preneuse!
Afficher les 52 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.