Domanda

Ho un filmato flash incorporato in un div, ho inserito un gestore eventi onclick javascript nel div principale, ma non riesco a catturare il clic, cosa c'è che non va?

Codice:

   <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>
È stato utile?

Soluzione

È meglio pensare che tutti gli swf abbiano un ordine z di infinito. Flash è in cima e c'è molto poco che si può fare per fermarlo. D'altra parte, se hai accesso al codice del file SWF stesso o se puoi utilizzare un altro swf per caricare il tuo swf corrente, sarai in grado di utilizzare un paio di diversi comandi Flash per indirizzare il JavaScript della pagina . (ExternalInterface è la soluzione migliore).

//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" );
}

Un'altra soluzione alternativa che utilizza onmousedown anziché onclick è fornita da Darwin di seguito.

Altri suggerimenti

L'ho trovato su http: // progproblems. blogspot.com/2009/08/javascript-onclick-for-flash-embeded.html

  1. Imposta il parametro wmode su transparent. Ciò consente all'oggetto che contiene il flash di ricevere il javascript onclick.
  2. Utilizza onmousedown installato <=>. Nonostante l'utilizzo di <=> <=>, alcuni browser non chiamano ancora <=>, ma chiamano <=>.

Il codice è simile al seguente:

<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>

Funziona per le mie esigenze =)

Il flash quasi sicuramente non propaga l'evento click al suo genitore. Nulla che puoi fare a meno che tu non abbia scritto il flash, suppongo.

l'oggetto flash cattura sempre il clic e non lo passa automaticamente. dovrai creare quella funzionalità: cattura onclick in flash e chiama la funzione JS.

cosa stai cercando di realizzare?

Prova questa semplice soluzione copri il flash con div e metti l'evento click in primo piano in modo che il flash non afferri mai il mouse.

<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>

esegue l'evento onclick su un tag oggetto. (il tag oggetto supporta gli eventi del mouse). quindi prendi il div genitore tramite DOM.

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

Questa è stata la soluzione per me. Bene, l'ho implementato su AC_RunActiveContent.js ai parametri:

'wmode', 'transparent',

Nice !!!

Ho avuto questo problema quando ho provato a creare banner automatici posizionati dinamici. Se SWF fosse impostato in modalità "opaquecolor", allora non avrei avuto clic accettabili e avrei dovuto usare opaquecolor perché alcuni banner erano incasinati con i colori dei siti web. La soluzione che ho trovato è di impostare il file SWF in modalità 'trasparente', a & Lt; div & Gt; di z-index: 10 e posiziona sotto di esso un nuovo < div > delle stesse dimensioni del file SWF, riempito con il colore opaco del file SWF. Entrambi si tuffano in un & Lt; a & Gt; etichetta. Ha funzionato.

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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top