11548 sujets

JavaScript, DOM et API Web HTML5

Salut,

Voilà plus d'une semaine que je butte sur un problème de CSS/JS/Flash, et je suis complètement perdu.

Pour résumer il sagit de mettre un player flash en "fullscreen" (dans cette solution, le player prends tout le document,non tout l'écran) sans avoir à ouvrir une nouvelle fenêtre.

Pour ça, coté js/css, j'utilise le div qui contient le <embed> ou <object> généré via un SWFObject (pour les problêmes du bug activeX de IE6) que j'aggrandit à la taille "max visible" du document.
Enfin pour gérer les problèmes de scroll (le document est forcément plus grand), je mets mon <body> en overflow:hidden et la meme taille que le div cité plus haut.
Coté Flash, le développeur utilise un écouteur sur son stage qui regarde si son stage à été modifié et lui demande donc de se resizer.

Voilà, en gros cette solution fonctionne presque parfaitement si ce n'est que le flash n'arrive pas à récupérer le changement d'état de son stage.
Le résultat c'est que le div se redimensionne bien comme prévu mais pas l'animation.
En fait, cette solution fonctionnait jusqu'à ce que règle le problème du scroll avec l'overflow:hidden sur <body>...
Incompréhensible.

Avant de vous donner le code, est ce que quelqu'un a déjà essayé ce genre de technique et éventuellement rencontré le même problême ?

Entre temps, nous avons également essayé une méthode plus direct via une fonction JS appel une fonction du Flash pour lui dire explicitement "Vas y, resize toi". Mais là encore, si j'appel cette fonction depuis mon gestionnaire, je n'y arrive pas.
Par contre si c'est le flash qui appel cette fonction, il recupere bien ses petits.

Merci d'avance pour remarques et suggestions

Voici le html pour le flash et le bout de js qui est censé faire l'appel explicite à ce player.

Le code html du player

...
<div id="flash_player" style="position: relative;">
<embed width="99%" height="99%" allowscriptaccess="always" quality="high" bgcolor="#000000" name="player_swf" id="player_swf" style="" src="/missglad-tube/player.swf?file=http%3A%2F%2Frdr.diff.missglad.com%2Fa70231b28b7e8d8fcb9cf865800d7bad.flv" type="application/x-shockwave-flash"/>
</div>
...


La fonction js pour l'appel explicite

...
//Appel explicite envoyé au player flash pour lui indiquer un resize
callFlashResize = function(){
	var flash_anim = window.player_swf || document.player_swf;
	flash_anim.onResizeFromJS();
}
...
Salut Befa,

Désolé d'avoir mis autant de temps à répondre...

A priori oui, on utilise ExternalInterface et SWFObject pour générer le player côté html.

En fait il y a un écouteur dans l'anim qui attends un resize pour se redimensionner à la taille de son environnement.
Le problème étant que l'anim ne perçoit pas ce resize ou alors uniquement quand je manipule les dimensions de <div id="flash_player"...> dans FireBug...

Sinon à part ça, j'aimerai quand même savoir pourquoi flash_anim.onResizeFromJS(); ne marche pas quand il est appelé directement depuis un JS.
onResizeFromJS est défini dans le player flash.

A noter que même dans une popup (window.open) avec les bonnes dimensions le player ne réagit pas...
Modifié par Oric01 (11 Apr 2007 - 17:59)