Restrictions d'IE sur les objets à contenu actif - Forums de discussion

Navigation

Accueil du forum » Flash » Restrictions d'IE sur les objets à contenu actif


Le sujet

koolstuffRestrictions d'IE sur les objets à contenu actif
Par koolstuff, le Mercredi 20/09/2006 à 15h17'03
93 messages
Vous avez peut-être pu remarquer depuis quelques temps qu'Internet Explorer a restreint l'utilisation de certains "controls HTML" tels que APPLET, EMBED ou OBJECT. Pour des raisons de sécurité, ces objets ne sont plus actifs par défaut. On est obligé de cliquer une fois dessus pour avoir la main. Beaucoup de sites en flash ou ne contenant que quelques parties en flash se retrouvent avec un design "gâché" par un cadre gris entourant ces objets.

Adobe a publié il y a quelques temps un article à ce sujet avec un correctif Javascript permettant de contourner le problème : http://www.adobe.com/devnet/activecontent/articles/devletter.html.

La solution en clair est de créer les objets non pas directement en HTML brut dans la page mais plutôt de façon dynamique dans un JS externe (car bizarrement chez IE ils ont appliqué le correctif sur la page web en cours mais pas dans les JS externes ?!? ).

Ce qui fait qu'au lieu de taper les lignes de création d'un objet flash par exemple (<object...><embed...></embed></object> ) Adobe propose d'utiliser leur fonction JS comme cela :
<script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0','width','100','height','22','src','button1','quality','high','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','button1');
</script>


C'est un peu lourdeau et illisible à mon goût. Pour ceux que ça intéresse je me suis fait un petit script très simple à intégrer dans une page web qui a déjà ses animations flash créées :

Rajouter dans un fichier JS externe la fonction WriteSWF() :
function WriteSWF(str){
    document.write(str);
}


Rajouter 2 fonctions php à vos scripts OBSwfBegin() et OBSwfEnd() :
<?php
// Bufferise le SWF
function OBSwfBegin(){
    
ob_start();
}

// Affiche le SWF
function OBSwfEnd(){
    
$content addslashes(str_replace(array("\r""\n"), ""ob_get_contents()));
    
ob_end_clean();
    echo 
"<script type='text/javascript'>WriteSWF('$content');</script>";
}
?>



Il suffit maintenant de rajouter autour de vos objets flash les 2 appels de fonction comme ceci (j'ai simplifié en retirant toutes les propriétés dispensables pour l'exemple) :

<?php OBSwfBegin(); ?>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0">
    <param name="movie" value="animation.swf">
    <embed src="animation.swf" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
</object>
<?php OBSwfEnd(); ?>




Cela requiert d'avoir les fonctions de bufferisation de sortie activées sur votre serveur web, ce qui est très souvent le cas (voir http://fr2.php.net/manual/en/ref.outcontrol.php).
Voilà, en espérant avoir pu dépanner.

[Message édité par koolstuff le 20/09/2006 à 15h20'58]

________________
¤¤ KooLStuFF ¤¤

Les réponses

raptorPar raptor, le Jeudi 21/09/2006 à 10h54'24
2217 messages
C'est clair que IE est très chiant pour çà, m'enfin je l'utilise pas donc...
Mais merci pour cette contribution pour les developpeurs

________________
Fondateur de Net-Pratique,
Ancien webmaster.
Statut: Administrateur/Webmaster

koolstuffPar koolstuff, le Jeudi 21/09/2006 à 11h18'52
93 messages
Ben en fait t'es concerné aussi parce que tes visiteurs eux viennent en partie d'IE aussi donc ça fait que ton interface est gachée de toute façon par cette extension [à la con]

________________
¤¤ KooLStuFF ¤¤

raptorPar raptor, le Jeudi 21/09/2006 à 11h23'17
2217 messages
koolstuff à dit:

Ben en fait t'es concerné aussi parce que tes visiteurs eux viennent en partie d'IE aussi donc ça fait que ton interface est gachée de toute façon par cette extension [à la con]


Oui , d'ou ma phrase :
raptor à dit:


Mais merci pour cette contribution pour les developpeurs


________________
Fondateur de Net-Pratique,
Ancien webmaster.
Statut: Administrateur/Webmaster

koolstuffPar koolstuff, le Jeudi 21/09/2006 à 11h27'41
93 messages
Mouais...

________________
¤¤ KooLStuFF ¤¤

icoPar ico, le Vendredi 22/09/2006 à 13h54'48
437 messages
Voila une donnée intéressante...
Cela veut t il dire qu'un jour ‘Ie’ interdira carrément les pages web de s'afficher ? Surtout si il ont un contenant a base de flash ou de javascript !
Et bien on n’est pas sortie de l’auberge ! Plus on avance plus on reconnais que l’on ne maîtrise pas du tout ce qui peut être fait côtés code ! En même temps je dit cela a froid donc ce n’est pas une critique envers ‘Ie’ mais envers la programmation en générale !

Merci donc pour ce bout de code contournant un nouveau problème de codage !

________________
"L'homme a l'avenir devant lui et il l'aura dans le dos chaque fois qu'il fera un demi tour!" (Pierre Dac)

koolstuffPar koolstuff, le Vendredi 22/09/2006 à 14h52'47
93 messages
Ouep, en fait le net ça a été fait à l'arrache genre : "allez y, faites ce que voulez" et depuis tout le monde se fait chier avec des restrictions et des patches dans tous les sens pour brider de plus en plus les possibilités (toujours au détriment de ceux qui ont de bonnes intentions...).

Foutu net

________________
¤¤ KooLStuFF ¤¤

icoPar ico, le Vendredi 22/09/2006 à 15h59'20
437 messages
Et waip

(Et dire qu'en metant ma réponse au dessus je pensait être out of the post)

N'empêche que si cela dévire encore on finira par ne plus rien faire et ca sera retour au néan ! (Solution a proscrire)

________________
"L'homme a l'avenir devant lui et il l'aura dans le dos chaque fois qu'il fera un demi tour!" (Pierre Dac)

fedebulPar fedebul, le Jeudi 28/09/2006 à 19h59'53
1 message
bonjour peux t'on mettre le code .js dans la meme page ?

________________
fedebul

koolstuffPar koolstuff, le Jeudi 28/09/2006 à 22h12'51
93 messages
Non, Il faut - absolument - créer un fichier Javascript (par exemple "script.js" dans lequel tu recopie la fonction suivante :

function WriteSWF(str){ 
    document.write(str); 
}



Ensuite dans ton code php, rajoute les 2 fonctions (OBSwfBegin et OBSwfEnd) décrites plus haut.

Puis relit bien ce qui est expliqué ensuite

________________
¤¤ KooLStuFF ¤¤

dollarPar dollar, le Samedi 28/10/2006 à 22h40'00
22 messages
c'est stupide ca qu'ils font, voilà pourquoi il faut se tourner vers des navigateurs tels que firefox, etc...

et puis sans virus, ni mauvais scripts, qu'allons-nous devenir ?

j'ai passé tellement d'heures à virer les virus, réparer mon pc, que sans ça je m'ennuierais

________________
dollar

Pages

Réponses les plus anciennes... 1 ...Réponses les plus récentes

A lire également

- Les conditions générales d'utilisation du site

Top-sites membres

Les Amis des Animaux | -819 pointsastuces blog et ciné live | -1242 pointsDark Lord Center | -1243 pointsBlogHotel - Hébergement de Blog gratuit | -1988 points

Discussions récentes dans les forums

Membres
Pseudo:
Pass: Mémoriser ?
Problème d'identificationInscription gratuite
Tribune libre
CNIL: 1098091
Connectés: 4
Google:
Publicité: Vidéo humoristique de publicité télé.