2009-10-23 5 views
1

J'essaie de faire quelque chose d'inhabituel. Je promets que cela a un but. Je suis sûr à 90% que cela ne peut pas être fait, mais je voulais vérifier auprès des génies.Possible de désactiver l'élément flash?

Est-il possible d'avoir un objet/.swf incorporé dans la page, qu'il soit affiché, mais n'autorise aucune interaction avec celui-ci. Par exemple, pouvez-vous modifier le code d'intégration de YouTube pour afficher le lecteur, mais ne permettre aucune interaction avec lui?

J'ai recherché la liste de variables de flash, mais je n'ai rien vu pour le faire.

Merci

+0

Je ne crois pas que vous pouvez le faire en changeant le code html plongement. Il pourrait y avoir quelques façons de le faire comme peut-être intégrer un swf transparent sur le dessus d'un autre swf, mais je ne sais pas si vous pouvez le faire puisque je ne me hasarde pas beaucoup en HTML. – Allan

+0

Merci, je pensais en ce sens, mais en utilisant un gif transparent. Je vais essayer. –

Répondre

3

Utilisez une approche à plusieurs niveaux: placer un élément div sur le dessus de l'objet flash, faire la même taille et transparente. C'est tout. Aucun JavaScript requis. Et pour rendre IE6/7/8 heureux, cela ne marche bien sûr pas, donc on ajoute un truc: un fond et une opacité nulle. Vous souhaiterez peut-être ajouter le CSS uniquement IE dans un fichier distinct pour empêcher l'invalidation CSS.

Important: pour que cela fonctionne, wmode doit être réglé sur opaque (comme l'a noté TheBrain plus tôt), le parent div doit disposer d'un ensemble de position, l'enfant div doit avoir position:absolute et width/height du flash animation. Les codes opacity, filter et background-color sont uniquement destinés à la compatibilité IE6/7/8. Le code tel qu'il est fonctionne à travers le navigateur (à l'exclusion de certains détails pour plus de clarté) et est demonstrated on this page dans son intégralité.

** Mise à jour: ** La largeur et la hauteur de l'élément parent div doivent être définies pour empêcher l'insertion de certaines bordures non couvertes. Par défaut, un élément div correspond à 100% de largeur. IE ajoute une marge de gauche et FF ajoute une marge inférieure à l'animation flash. En définissant explicitement les dimensions, cela fonctionnera comme prévu. Pour prouver que la couverture est placée correctement, changez la couleur et l'opacité de la couverture-div. Cette modification est également mise à jour dans le demo page.

<div style="position:relative;width:728px;height:90px;"> 
    <div style="position:absolute; 
      width:728px;height:90px; 
      background-color:white; 
      opacity:0;filter: alpha(opacity=0);"> 
     &nbsp; 
    </div> 
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
     width="728" height="90"> 
     <... params etc ...> 
     <param name="wmode" value="opaque" /> 

     <embed width="728" height="90" 
      type="application/x-shockwave-flash" 
      wmode="opaque" 
      etc-params=xyz> 
     </embed> 
    </object> 
</div> 
+0

Je ne parle pas de fichiers .swf que je fais.Je veux dire prendre n'importe quel contenu flash pré-fabriqué, en l'intégrant à l'aide de balises object ou embed, mais en ne vous permettant pas de cliquer sur quoi que ce soit. J'ai utilisé l'exemple d'une vidéo sur youtube. Je sais que cela semble inutile. –

+0

J'ai réécrit ma réponse, merci pour les informations supplémentaires, j'ai ajouté une page pour montrer le principe. La pointe wmode est une gracieuseté de TheBrain, le reste a été trouvé en expérimentant pour le faire fonctionner cross-browser. Amusant: faites la moitié de la div et votre animation est à moitié activée :) – Abel

+0

C'est génial; Merci! –

0

oui, vous pouvez. vous pouvez intégrer votre swf à l'intérieur d'une div et utiliser cette balise div pour capturer tous les événements de clic/clavier et les empêcher de se propager au flash. Je n'ai pas de code en ce moment mais vous pouvez prendre le modèle "désactiver le clic droit sur la page" et faire quelques changements pour gérer tous les événements + le faire fonctionner sur votre div.id seulement pas sur toute la page.

et n'oubliez pas que vous devez le flash pour avoir le wmode = opaque pour que cela fonctionne

0

Youtube lui-même a une option d'intégrer une vidéo sans les contrôles. Regardez le Chromeless player

Iirc vous devez passer la version = 3 en tant que paramètre de l'URL youtube.

0

Youtube et Adobe viennent de sortir une nouvelle API AS3 pour intégrer des vidéos youtube en flash.

Vous devriez vraiment consulter les liens suivants: Celui qui vous guide à travers la façon de mettre en place le AS3: RIA CODES: YouTube Chromeless Player AS3 API

Questions connexes