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


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

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.