Verwenden Sie SWFObject, um das Browserkompatibilitätsproblem beim Einfügen von Flash in HTML perfekt zu lösen

Verwenden Sie SWFObject, um das Browserkompatibilitätsproblem beim Einfügen von Flash in HTML perfekt zu lösen

Lasst uns gemeinsam lernen

1. Traditionelle Methoden


Code kopieren
Der Code lautet wie folgt:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"codebase="<a href="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0">http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0</a>" width="550" height="400" id="Ohne Titel-1" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="Film" value="meinFilm.swf" />
<param name="Qualität" value="hoch" />
<param name="bgcolor" value="#ffffff" />
<embed src="meinFilm.swf" Qualität="hoch" bgcolor="#ffffff" Breite="550" Höhe="400"name="meinFilm" Ausrichtung="Mitte" allowScriptAccess="sameDomain" Typ="Anwendung/x-shockwave-flash" Pluginspage="<a href="http://www.macromedia.com/go/getflashplayer">http://www.macromedia.com/go/getflashplayer</a>" />
</Objekt>

Diese Methode verwendet zum Einbetten die Objekt- und Einbettungs-Tags. Wenn Sie genau hinschauen, werden Sie feststellen, dass viele Parameter des Objekts und viele Attribute im Embed wiederholt werden. Warum wird das gemacht? Aus Gründen der Browserkompatibilität unterstützen manche Browser Objekte und manche eingebettete Objekte. Deshalb müssen Sie beim Ändern der Flash-Parameter beide Stellen ändern.

Bei dieser Methode handelt es sich um die offizielle Methode von Macromedia, die die Funktionalität von Flash weitestgehend gewährleistet und keine Kompatibilitätsprobleme aufweist. Allerdings funktioniert es jetzt nicht mehr so ​​gut: Die Validierung schlägt fehl, da das aus Kompatibilitätsgründen eingebettete Embed-Tag nicht der W3C-Spezifikation entspricht. Ob Ihnen Standards egal sind oder nicht, ist natürlich eine andere Sache.

Aus verschiedenen Gründen hat Microsoft nach SP2 den Nutzungsmodus von IE ActiveX eingeschränkt. Das heißt, im ActiveX auf der Seite befindet sich eine virtuelle Box, und der Benutzer muss einmal klicken, um normal zu interagieren. Flash ist als ActiveX in die Webseite eingebettet und daher ebenfalls betroffen. Dieses Problem kann nur durch die Einbettung von Flash über JS gelöst werden.

Es gibt keine Flash-Versionserkennung. Wenn die Flash-Plugin-Version des Browsers nicht ausreicht, wird Ihre SWF-Datei möglicherweise nicht normal angezeigt oder es erscheint ein ActiveX-Bestätigungsfenster für die Installation – dieses Fenster ist für viele Benutzer sehr beängstigend.

2. Methode der Einbettung mit JS

Beim Einbetten mit JS gibt es unterschiedliche Einbettungsmethoden, manche sind gut und manche nicht. Manche Leute verwenden document.write, um direkt zu schreiben. Ehrlich gesagt ist diese Methode nicht sehr gut. Es fühlt sich an, als hätte sie zu viele Hack-Elemente und ist ein bisschen wie eine Überprüfung nur um der Überprüfung willen. Es spiegelt auch nicht die Vorteile von JS wider. Ich denke, ein gutes JS-Einbettungsskript sollte zwar die Funktionen von Flash sicherstellen, aber gleichzeitig die Vorteile von JS voll ausschöpfen. Es sollte eine Versionserkennung haben, Barrierefreiheitsprobleme gut lösen können (also wissen, was zu tun ist, wenn Benutzer Flash-Inhalte nicht durchsuchen oder JS deaktivieren können) und einfach wiederverwendbar sein.

Wir werden hier über die SWFObject-Lösung sprechen:

„SWFObject“ verwendet Javascript zum Einfügen von Flash, was viele Vorteile bietet. Der Code ist prägnant, unter IE6 wird keine Eingabeaufforderung „Klicken Sie hier, um das Steuerelement zu aktivieren“ angezeigt und es besteht die W3C-Verifizierung. Unterscheidet sich von der herkömmlichen Methode zum Einfügen von „Objekten“ in Flash.

In der neuen 2.x-Version von SWFObject erfordert der einfachste Aufruf nur einen Satz und es besteht keine Notwendigkeit, auf das Laden der Seite zu warten. Dies bedeutet, dass Sie diesen Satz überall auf der Seite schreiben können. Es ist viel einfacher als die vorherige Version. Hier sind einige einfache und häufig verwendete Anrufmethoden:

1. Der einfachste und grundlegendste klassische Satz, der immer dann verwendet werden kann, wenn Sie Flash einfügen möchten.


Code kopieren
Der Code lautet wie folgt:

<div id="swfid"></div>
<script type="text/javascript" src="swfobject.js"></script>
<Skripttyp="text/javascript">
swfobject.embedSWF("test.swf", "swfid", "300", "120", "9.0.0", "expressInstall.swf");
</Skript>

Hinweis: Rufen Sie die Methode embedSWF auf, um die SWF-Datei einzufügen. Die Parameter sind: @die Adresse der SWF-Datei; @die ID des Containers (z. B. div), der zum Laden der SWF-Datei verwendet wird; @die Breite des Flashs; @die Höhe des Flashs (natürlich können Breite und Höhe hier als Prozentwerte wie 100 % ausgedrückt werden); @die Mindestversion, die zum normalen Abspielen des Flashs erforderlich ist; @wenn die Version niedriger als die Anforderung ist, führen Sie die SWF-Datei aus. Verwenden Sie hier diesen Flash, um zum offiziellen Download der neuesten Version des Flash-Plug-Ins zu springen. (Dieser Parameter kann weggelassen werden) Wenn Sie mehrere Flashes an verschiedenen Stellen auf derselben Seite einfügen, wiederholen Sie einfach die obige Anweisung und verwenden Sie unterschiedliche Container-IDs.

2. Aufrufen von Methoden zum Übergeben von Parametern, Variablen und Eigenschaften an SWF-Dateien


Code kopieren
Der Code lautet wie folgt:

<script type="text/javascript" src="swfobject.js"></script>
<Skripttyp="text/javascript">
//1. Verwenden Sie Json, um Variablen, Parameter und Eigenschaften zu initialisieren
var flashvars = {
name1: "hallo",
name2: "Welt",
Name3: "foobar"
};
var Parameter = {
Menü: "false"
};
var Attribute = {
ID: "dynamicContent2",
Name: "dynamicContent2"
};
swfobject.embedSWF("test6_flashvars.swf", "content2", "300", "120", "6.0.0","expressInstall.swf", flashvars, params, attribute); </p> <p>//2. Traditionelle Initialisierungseinstellungen, der Effekt ist der gleiche
var flashvars = {};
flashvars.name1 = "hallo";
flashvars.name2 = "Welt";
flashvars.name3 = "foobar";
var Parameter = {};
params.menu = "falsch";
var Attribute = {};
Attribute.id = "dynamicContent3";
Attribute.Name = "dynamicContent3";
swfobject.embedSWF("test6_flashvars.swf", "content3", "300", "120", "6.0.0","expressInstall.swf", Flashvars, Parameter, Attribute);
//3. Schreiben Sie es direkt am Ende, nur ein Satz, prägnant und kraftvoll, ohne Aufschub
swfobject.embedSWF("test6_flashvars.swf", "content5", "300", "120", "6.0.0","expressInstall.swf", {name1:"Hallo",name2:"Welt",name3:"foobar"}, {menu:"false"}, {id:"dynamicContent5",name:"dynamicContent5"});
</Skript>

Offizielle Dokumentation zu SWFObject 2.0 (Chinesisch) https://www.jb51.net/books/175630.html

github: https://github.com/swfobject/swfobject .

<<:  Detaillierte Erklärung der Unterschiede zwischen den vier Positionierungsarten in CSS

>>:  Bringen Sie Ihnen bei, wie Sie den Beobachtermodus in Javascript implementieren

Artikel empfehlen

Implementierung der gemeinsamen Nutzung von Daten zwischen Docker Volume-Containern

Was ist Volumen? „Volume“ bedeutet auf Englisch K...

Schritte zum Ausführen von ASP.NET Core im Docker-Container

Es gibt in letzter Zeit zu viel Wissen zu lernen,...

So installieren Sie Nginx in CentOS

Offizielle Dokumentation: https://nginx.org/en/li...

Detaillierte Schritte zur Remotebereitstellung einer MySQL-Datenbank unter Linux

Remotebereitstellung der MySQL-Datenbank unter Li...

Border-Radius IE8-kompatible Verarbeitungsmethode

Laut canisue (http://caniuse.com/#search=border-r...

Detaillierter Installationsprozess und Prinzip des Vue-Routers

Inhaltsverzeichnis 1. Implementierungsprinzip des...

Fragen und Antworten: Unterschiede zwischen XML und HTML

F: Ich weiß nicht, was der Unterschied zwischen XM...

Idea stellt Remote-Docker bereit und konfiguriert die Datei

1. Ändern Sie die Docker-Konfigurationsdatei des ...

Vue-Statusverwaltung: Verwendung von Pinia statt Vuex

Inhaltsverzeichnis 1. Was ist Pinia? 2. Pinia ist...

Tiefgreifendes Verständnis von Javascript-Prototypen und Prototypenketten

Inhaltsverzeichnis 1. Was ist ein Prototyp? 2. Pr...

Bei MySQL-Zeichentypen wird die Groß-/Kleinschreibung beachtet.

Standardmäßig sind MySQL-Zeichentypen nicht case-...

JS+Canvas zeichnet ein Glücksrad

In diesem Artikel wird der spezifische Code der J...