Question

J'ai un film Flash intégré dans un div, je mets un gestionnaire d'événements javascript onclick dans le div principal, mais je ne saisis pas le clic, qu'est-ce qui ne va pas?

Code:

   <div id="top-box-player" onclick="alert('Hi Bananas!');">
     <object width="400" height="300">
        <param name="movie" value="general.swf">
        <embed src="./swf/general.swf" width="400" height="300">
        </embed>
     </object>
   </div>
Était-ce utile?

La solution

Il est préférable de penser que tous les swf ont un ordre z infini. Flash est au top et il y a très peu de choses qui peuvent être faites pour arrêter ça. D'autre part, si vous avez accès au code du fichier SWF lui-même ou si vous pouvez utiliser un autre fichier swf pour charger votre fichier swf actuel, vous pourrez utiliser deux commandes Flash différentes pour adresser le code JavaScript de la page. . (ExternalInterface est votre meilleur choix).

//This is what your AS code should look like:
import flash.external.ExternalInterface;
import flash.events.MouseEvent;

root.addEventListener( MouseEvent.CLICK, useExternal, true );

function useExternal( event:MouseEvent):void
{
    //swfClickFunction is defined in JavaScript
    ExternalInterface.call( "swfClickFunction" );
}

Darwin propose ci-dessous une autre solution alternative utilisant onmousedown au lieu de onclick.

Autres conseils

J'ai trouvé cela sur http: // progproblems. blogspot.com/2009/08/javascript-onclick-for-flash-embeded.html

  1. Définissez le paramètre wmode sur transparent. Cela permet à l’objet contenant le flash de recevoir le javascript onclick.
  2. Utilisez onmousedown au lieu de <=>. Malgré l'utilisation de <=> <=>, certains navigateurs n'appellent toujours pas le <=>, mais ils appellent <=>.

Le code ressemble à ceci:

<div onmousedown="clickBanner(1)">
<object>
<param name="movie" value="3.swf">
<param name="wmode" value="transparent" />
<embed wmode=transparent allowfullscreen="true" allowscriptaccess="always" src="3.swf"></embed>
</object>
</div>

Ça marche pour mes besoins =)

Le flash ne propage certainement pas l'événement click à son parent. Je suppose que vous ne pouvez rien faire à moins d’écrire le flash.

l'objet flash capturera toujours le clic et ne le transmettra pas automatiquement. vous devrez construire cette fonctionnalité - attrapez onclick en flash et appelez JS-function.

qu'est-ce que vous essayez d'accomplir?

Essayez cette solution simple: couvrez le flash avec div et placez l’événement click sur le haut de la page afin que flash ne capture jamais la souris.

<div style="position:absolute;top:209px;left:80px;z-index:500;" id="helpvideos"> 
<div style="float:left">
<fb:swf 
    swfbgcolor="FFFFFF"  
    swfsrc='<?php echo SITE_URL;?>swf/3_sidebar.swf'  
    width='600' height='670'
    wmode="transparent"
     />
</div>
<div style="width:600px;height:670px;position:absolute;float:left;z-index:6000;" onclick="document.getElementById('helpvideos').setStyle('display','none');">&nbsp;</div>
</div>

Faites un événement onclick sur une balise d’objet. (la balise object supporte les événements de la souris). puis récupérez le div parent via DOM.

<param name="wmode" value="transparent" />

C’était la solution pour moi. Eh bien, je l’ai implémenté sur AC_RunActiveContent.js dans les paramètres:

'wmode', 'transparent',

Nice !!!

J'ai eu ce problème lorsque j'ai essayé de créer des bannières automatiques à positionnement dynamique. Si les fichiers SWF étaient configurés en mode "opaquecolor", je n'avais pas de clics acceptables - et je devais utiliser opaquecolor car certaines bannières étaient gâchées par les couleurs des sites Web. La solution que j'ai trouvée consiste à définir le fichier SWF en mode "transparent", à un & Lt; div & Gt; de z-index: 10, et place en dessous un nouveau < div > de mêmes dimensions du fichier SWF, rempli avec le code opaquecolor du SWF. Les deux divs dans un & Lt; un & Gt; étiquette. Cela a fonctionné.

Example:
    <a href="www.mysite.com">
    <div id="SWF_file_container" style="width:100px; height:40px; z-index:10;">
    <object> .... </object> (adding SWF in TRANSPARENT MODE)
    </div>
    <div id="opaquecolor_of_swf" style="width:100px; height:40px; z-index:2; background-color:#ff0000;"></div>
    </a>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top