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

Soyez le premier à donner votre avis sur cette source.

Vue 58 799 fois - Téléchargée 6 771 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

Naixn
Messages postés
455
Date d'inscription
mardi 17 septembre 2002
Statut
Membre
Dernière intervention
22 juillet 2007
-
hihihi, je pense que ca va en aider qquns ;)
flashman007
Messages postés
769
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
17 mai 2004
-
oué c pratique!!!
flashman007
Messages postés
769
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
17 mai 2004
-
c marrant elle me parait bien grande cette page...
Naixn
Messages postés
455
Date d'inscription
mardi 17 septembre 2002
Statut
Membre
Dernière intervention
22 juillet 2007
-
C'est le code qui n'a pas de retour à la ligne
afad
Messages postés
715
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
10 septembre 2009
-
EH, passez au 19 pouces les gars ;-)

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.