Frage

ich eine embed Flash-Film innerhalb eines div, ich in der Haupt div eine Javascript Onclick-Ereignishandler setzen, aber das Klicken nicht kontrollieren, was ist falsch?

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>
War es hilfreich?

Lösung

Es ist am besten alle SWFs zu denken, wie eine Z-Reihenfolge der Unendlichkeit ist. Flash ist oben und es gibt sehr wenig, was das stoppen getan werden kann. Auf der anderen Seite, wenn Sie Zugriff auf den Code der SWF haben selbst oder wenn Sie ein anderes swf verwenden können Ihre aktuelle swf zu laden, werden Sie Befehle ein paar verschiedenen Flash verwenden, um die JavaScript auf der Seite zu adressieren . (ExternalInterface ist die beste Wahl).

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

Eine weitere alternative Lösung anstelle von Onclick mit onmousedown wird von Darwin weiter unten.

Andere Tipps

Ich fand dies unter http: // progproblems. blogspot.com/2009/08/javascript-onclick-for-flash-embeded.html

  1. Stellen Sie den param wmode transparent. Dies ermöglicht es, das Objekt den Blitz mit dem Javascript onclick erhalten.
  2. Verwenden Sie onmousedown insted onclick. Trotz wmode transparent, rufen einige Browser noch wont die onclick, aber sie rufen onmousedown.

Der Code sieht wie folgt aus:

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

Es ist für meine Bedürfnisse arbeiten =)

Der Blitz mit ziemlicher Sicherheit propagiert nicht das Click-Ereignis zu seinem übergeordneten. Nichts, was Sie tun können, wenn Sie den Flash geschrieben, nehme ich an.

das Flash-Objekt immer den Klick fangen und sie nicht automatisch passieren entlang. Sie wird diese Funktionalität bauen müssen -. Onclick Blitz fangen und JS-Funktion aufrufen

, was Sie zu erreichen versuchen?

Versuchen Sie, diese einfache Lösung den Blitz mit div abdecken und das Click-Ereignis auf div setzt so Blitz wird nie die Maus greifen.

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

do Onclick-Ereignis auf einen der Objekt-Tag. (Objekt-Tag unterstützt Ereignisse Maus). greifen dann die Mutter div über DOM.

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

Das war die Lösung für mich. Nun, ich setzte sie über die AC_RunActiveContent.js an dem params:

'wmode', 'transparent',

Nizza !!!

Ich hatte das Problem, wenn ich versuche, automatisierte dynamische platzierte Banner zu machen. Wenn SWF wurden gefassten Modus ‚opaquecolor‘, dann hatte ich keine Klicks acceptables - und ich hatte opaquecolor zu verwenden, da einige Banner wurden mit den Websites Farben durcheinander. Die Lösung, die ich gefunden, ist die SWF zu ‚transparent‘ -Modus zu setzen, bei einem

scroll top