2009-07-30 10 views
2

Ich habe eine swf, die Flash 9 erfordert, und ich versuche, Inhalt darüber zu zeigen. Um dies zu erleichtern, habe ich wmode auf transparent gesetzt. Das Problem ist, das funktioniert nur, wenn der Benutzer Flash 10 installiert hat, und ich möchte wirklich nicht benötigen Flash 10, um den Inhalt auf der Website, an der ich arbeite, zu sehen. Wenn ich mit flash 9 einen div über den Flash-Inhalt drücke, blutet der swf in oder überschreibt das div vollständig.Inhalte über einen Flash 9 SWF anzeigen?

Wie kann ich dies verhindern, ohne Flash 10 eine Benutzeranforderung zu machen?

Ich verwende swfobject, um swf und jquery-ui einzubetten, um divs über den Flash-Inhalt anzuzeigen.

EDIT:

Das Ausfallverhalten wird nur in Safari zur Kenntnis genommen.

Antwort

2

Ich bin mir nicht sicher, ob dies Ihnen per se helfen wird. Aber ich habe folgende Methode verwendet, um Inhalt über Flash zu zeigen.

Ich hatte dieses Problem vor einiger Zeit konfrontiert. Ich sollte dem Nutzer ein Popup für die Allgemeinen Geschäftsbedingungen für die Registrierung auf einer Website zeigen. Popup kam in Ordnung, aber oben auf der Seite war ein Flash-Film, der den oberen Teil des Dialogs verdeckte. Die getestete und weit verbreitete Methode besteht darin, einen Iframe an die Stelle zu setzen, an der Sie Ihren Inhalt und Ihre absolute Position Ihren Inhalt und IFrame zeigen möchten.Zum Beispiel, wenn Sie ein div über einen Flash-Film zeigen wollen, legen Sie dann eine IFrame wie folgt:

<iframe style="position:absolute;top:250;left:150;"></iframe> 

dann die div Position genau über diesem iframe wie:

<div style="position:absolute;top:250;left:150;"></div> 

Ich war mit jquery auf der Seite, um den Dialog mit dem Plugin ui.dialog anzuzeigen. Nachdem ich irgendwann herumalberte, entwickelte ich folgende einfache Lösung.

1) Setzen Sie das ID-Attribut auf das Filmelement, um das Filmobjekt eindeutig zu identifizieren. Wie,

<object id="movie1"></object> 

2), bevor Sie den Dialog (oder andere Inhalte für diese Angelegenheit darstellt) rufen eine JavaScript-Funktion, um den Film zu verbergen. Wie,

$("#movie1").css("display","none"); 

3) jetzt Dialog anzeigen. Wie,

$("#dialog").dialog("open"); 

4) nach dem Schließen des Dialogs, zeigen Sie den Film erneut. Wie,

$("#dialog").dialog("close"); 
    $("#movie1").css("display","inline"); 
3

wmode transparent ist seit Jahren Teil des Flash gewesen und 10 auf Flash Player nicht eingeschränkt ist

unabhängig, Sie brauchen nicht zu wmode transparent zu verwenden; Sofern Sie nicht wirklich Transparenz in Ihrer SWF-Datei benötigen, sollten Sie stattdessen wmode opaque verwenden. Es ist weniger fehlerhaft und benötigt weniger Prozessorleistung.

Der Trick besteht darin, auch sicherzustellen, dass Ihre HTML-Elemente eine "Position" in der CSS haben.

Versuch nach den Beispielen und Anleitungen hier: http://learnswfobject.com/advanced-topics/placing-html-elements-over-a-flash-movie/

-1

Das fand ich in meinen Lesezeichen (und sie sind von der Pre-10-Ära). Ich habe zwar keinen Flash Player 9/Safari hier, um dies jetzt zu bestätigen. Versuch es einmal.

Different WModes for Browsers

Wie pipwerks sagte, sollten WMode diese kontrollieren, aber nicht alle Plattformen/Browser behandeln sie richtig. In diesem Fall würde ich dies als Safari/Flash9-Fehler betrachten und nicht reparieren.

-1

versuchen Sie, den Parameter wmode auf opak zu setzen. Das scheint eine Menge HTML-Ebenen-/Tiefenprobleme zu lösen, wenn Flash involviert ist.

1

Ich kann keinen Rat anbieten, der das Problem lösen könnte, also schlage ich vor, dass Sie stattdessen das Problem vermeiden möchten.

Anstatt haben die (X) HTML-Inhalte über den Flash-Inhalt in der z-index

+------------+ 
|   | 
| +-------------+ 
| | html  | 
| |    | 
| +-------------+ 
| Flash | 
+------------+ 

Wie wäre es stattdessen im Fenster, um das (x) HTML-Inhalte über den Flash-Platzierung:

+------------+ 
| html  | 
|   | 
+------------+ 
+------------+ 
|   | 
| Flash  | 
|   | 
|   | 
|   | 
|   | 
+------------+ 

Es ist nicht ideal, aber es bietet zumindest eine praktikable Lösung, bis Flash/html erfolgreicher ko-existieren kann.

+0

Dies ist in diesem speziellen Fall nicht möglich. Der Blitz ist ziemlich hoch auf der Seite, und ich ziehe jquery-ui Komponenten hoch. Ich wäre ein Workaround, wenn es möglich wäre. –

+0

Kudos auf dem Ascii-Diagramm übrigens. –

+0

Ihre Situation macht mir Angst, weil ich glaube, dass es leider keine besonders funktionelle Alternative gibt. Aber hier ist Hoffnung! Und ja, wer liebt ascii nicht =) –

Verwandte Themen