In HTML eingebettetes Flash Lösung zum Einbetten von Flash-Dateien in den HTML-Webseitencode (Teil 1)

In HTML eingebettetes Flash Lösung zum Einbetten von Flash-Dateien in den HTML-Webseitencode (Teil 1)

Nach chinesischem Brauch feiern wir das neue Jahr noch vor dem fünfzehnten Tag des ersten Mondmonats. An dieser Stelle möchte ich Ihren Freunden im Garten ein frohes neues Jahr wünschen.
Es kam vor, dass die Homepage des Unternehmens in diesen Tagen überarbeitet werden musste. Nach dem „Personalabbau“ des Unternehmens Ende letzten Jahres musste eine Person die Arbeit mehrerer Personen erledigen, und plötzlich war die Belastung groß. Nun, das lag ursprünglich nicht in meinem Aufgabenbereich, aber leider war ich daran beteiligt. Das Gute an diesem Unglück ist, dass die Aufgabe, die mir mein Chef dieses Mal zugewiesen hat, genau die Front-End-Entwicklungsaufgabe ist, für die ich mich schon immer begeistert habe. Zuvor war ich an der Entwicklung von Backend-Verwaltungsprogrammen für die Website des Unternehmens beteiligt und habe dabei hauptsächlich die Geschäftslogik auf der Serverseite verarbeitet. Ich hatte nie die Gelegenheit gehabt, meine Fähigkeiten in der Front-End-Entwicklung unter Beweis zu stellen, für die ich mich leidenschaftlich interessiere. Übung ist der beste Weg, um wahres Wissen zu testen, und das Lösen der mir zugewiesenen praktischen Aufgaben ist eine seltene Prüfung. Ich habe viel verstreutes Wissen durch Bücher und verschiedene Materialien gelernt, aber ich hatte nicht die Gelegenheit, es für einen „umfassenden Test“ zusammenzufassen, haha. Oben stehen so viele Worte, das liegt alles daran, dass sie zu lange unterdrückt wurden, haha.

Lassen Sie mich zunächst die Aufgabenanforderungen beschreiben: Auf der Homepage der Website des Unternehmens befindet sich ein JPG-Bild mit fünf Bällen. Seine Funktion besteht darin, zu navigieren. Wenn Sie auf den Text auf jedem Ball klicken, wird die sekundäre Seite mit den entsprechenden Informationen geöffnet. Zu dem Bild gibt es eine fast identische Flash-Version. Zu den Aufgaben, die mir mein Chef zugewiesen hat, gehört es, die Flash-Version der Navigation anzuzeigen, wenn im Client-Browser ein Flash-Dateiplayer installiert ist, andernfalls die JPG-Bildnavigation anzuzeigen. Nachdem ich die Aufgabe erhalten hatte, dachte ich einen Moment darüber nach. Da es sich um Frontend-Entwicklung handelt, muss ich natürlich die Browserkompatibilität berücksichtigen. Die beste Möglichkeit, die Lücke zwischen den Browsern zu überbrücken, besteht darin, ein oder mehrere ausgereifte JavaScript-Frameworks zu verwenden. Glücklicherweise gibt es ein sehr ausgereiftes und hochentwickeltes JS-Framework namens SWFObject.js.

Das erste Mal, dass ich mit SWFObject.js in Kontakt kam, war V1.5, und dieses Mal habe ich V2.1 verwendet, um das Problem zu lösen. Es gibt immer noch einige Unterschiede bei der Verwendung der beiden. Insgesamt bin ich der Meinung, dass V2.1 im Vergleich zu V1.5 einen großen Sprung nach vorne darstellt. V2.1 entspricht sowohl hinsichtlich des Quellcodes des Frameworks als auch des Nutzungsprozesses eher dem objektorientierten JavaScript-Programmierstil.

Ich werde Sie auf diese „harte“ Reise aus der Perspektive eines Lernenden mitnehmen, der gerade JavaScript erkundet hat. Egal, ob Sie ein Anfänger wie ich oder ein Veteran sind, der bereits gekonnt verschiedene JS-Codes schreiben kann, ich hoffe, Sie werden nachsichtig sein und mich auf zivilisierte Weise auf die Kurzsichtigkeit in meinem Denken und die Fehler in meinem Schreiben hinweisen.

Der folgende Code ist ein Anwendungsbeispiel, das ich aus einem Beschreibungsdokument von SWFObject V1.5 adaptiert habe (klicken Sie auf diesen Link, wenn Sie mehr über V1.5 erfahren möchten):

Code kopieren
Der Code lautet wie folgt:

<html>
<Titel>DEMO</Titel>
<Kopf>
<script type="text/javascript" src="swfobject_source.js"></script>
<Skripttyp="text/javascript">
var so = neues SWFObject("http://www.pec365.com/Flash/20071113.swf", "meinFilm", "304", "367", "7", "#FFFFFF");
so.write("Flashinhalt");
</Skript>
</Kopf>
<Text>
<Formular-ID="Formular1">
<div id="Flashinhalt">
<a href="http://www.adobe.com/go/getflashplayer">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Adobe Flash Player herunterladen" border="0" />
</a>
</div>
</form>
</body>
</html>

Wenn Sie die Bedeutung jedes Parameters in SWFObject() kurz verstehen möchten, lesen Sie bitte die Dokumentation. Ich werde sie hier nicht wiederholen.
Ich empfehle dringend, den Code im „V1.5-Verwendungsbeispiel“ in Notepad zu kopieren und auf SWFObject V1.5 zu klicken, um die erforderliche Quelldatei des V1.5-Frameworks herunterzuladen. Suchen Sie nach der Dekomprimierung die Datei swfobject_source.js (unkomprimierte Version, der Dateiname der komprimierten Version lautet swfobject.js), benennen Sie die Notepad-Datei in demo.html um und legen Sie sie im selben Ordner wie die Datei swfobject_source.js ab. Führen Sie sie dann in einem beliebigen Browser wie IE6/IE7, Fox, Opera, Safari, Navigator, Chrome usw. aus, um die Ergebnisse anzuzeigen.
Wenn Sie meinem Rat gefolgt sind, sollten Sie dieses Bild auf der Seite sehen. , und nicht eine Flash-Datei, warum? Wenn Sie die Internet Explorer-Reihe auf Ihrem PC installiert haben, befolgen Sie bitte die nachstehenden Schritte: Klicken Sie auf das IE-Browsersymbol, suchen Sie in der Symbolleiste das Menü „Extras“, wählen Sie „Internetoptionen“, klicken Sie im sich öffnenden Fenster auf „Erweitert“, suchen Sie die Option „Skriptdebugging deaktivieren (Internet Explorer)“, entfernen Sie das Häkchen aus dem Kontrollkästchen davor und klicken Sie auf „OK“. Durchsuchen Sie nach Abschluss der obigen Vorgänge die Seite demo.html erneut. Sie werden feststellen, dass ein Fehleraufforderungsfeld mit der folgenden Fehlermeldung angezeigt wird: „Ein Laufzeitfehler ist aufgetreten. Müssen Sie debuggen? Zeile: 117 Fehler: ‚null‘ ist leer oder kein Objekt.“

Wenn Sie zufällig eine IDE der VS 2003/2005/2008-Reihe für die Entwicklung verwenden, müssen Sie meiner Meinung nach nicht lernen, wie Sie JavaScript-Code debuggen. Sie können einen Debugger über var so = ... setzen und dann debuggen und verfolgen. Drücken Sie weiterhin F11, bis Sie über die Methode so.write() in die Datei swfobject_source.js gelangen. Sie werden feststellen, dass der tatsächliche Parameter „flashcontent“, der an so.write(elementId) übergeben wird, immer null ist, wenn document.getElementById("flashcontent") verwendet wird. Warum ist das so? Haben Sie das Problem gefunden?

Haha, wenn Sie noch ein Anfänger sind, der nicht viel über JavaScript weiß, werden Sie genauso verwirrt sein wie ich damals. Nach vielen Debugging- und Code-Änderungen bin ich fest davon überzeugt, dass der von mir geschriebene JS-Code keinen Fehler enthält. Könnte es sein, dass es ein Problem mit der extern geladenen Datei swfobject_source.js gibt? Wenn es ein Problem gibt, was ist dann das Problem? Ich habe damals versucht, eine Lösung für den Fehler zu finden. Ich habe den obigen Code in das folgende Beispiel geändert:

Code kopieren
Der Code lautet wie folgt:

<html>
<Titel>DEMO</Titel>
<Kopf>
<Skripttyp="text/javascript">
// Das Ausführen einer anonymen Funktion unterscheidet sich nicht vom Ausführen einer normalen Funktion
(Funktion() {
var flash = document.getElementById("flashcontent");
var msg = null;
fenster.onload = funktion() {
wenn (blinken) {
msg = „Das Element existiert.“;
flash.innerHTML = Nachricht;
} anders {
msg = „Das Element existiert nicht“;
Fenster.Alarm(Nachricht);
}
};
})();
</Skript>
</Kopf>
<Text>
<Formular-ID="Formular1">
<div id="Flashinhalt">
<a href="http://www.adobe.com/go/getflashplayer">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" _fcksavedurl=""http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif"" alt="Adobe Flash Player herunterladen" border="0" />
</a>
</div>
</form>
</body>
</html>

Wenn Sie den obigen Code ausführen, werden Sie feststellen, dass das Bild immer noch auf der Seite angezeigt wird. , und es erscheint ein Warnfenster mit der Meldung „Das Element existiert nicht“. Es scheint, dass das Problem nicht von der extern geladenen Datei swfobject_source.js herrührt.

Wenn Sie dies lesen, werden Sie definitiv meine damalige Frustration erleben. Nach einer kurzen Pause habe ich meinen Kopf frei gemacht und zurückgeblickt und festgestellt, dass das Wesentliche des Problems im „Laden des HTML-DOM“ liegt. Auf einer Seite werden die JS-Skripte im Seitenkopf (zwischen <head></head>) und die aus externen Dateien geladenen JS-Dateien ausgeführt, bevor das HTML-DOM tatsächlich erstellt wird. Daher können an diesen beiden Stellen ausgeführte Skripte nicht auf den DOM zugreifen, der noch nicht existiert. Sie sollten den wahren Grund kennen. Während der Ausführung des JS-Codes in Beispiel 1.1 wurde auf <div id="flashcontent">……</div> zugegriffen, bevor es erstellt wurde.

Nun, es gibt noch einen letzten Schritt, den Sie selbst ausführen müssen. Dabei müssen Sie einfach den obigen Code ändern und eine unelegante Methode verwenden, um das Problem des „HTML-DOM-Ladens“ zu lösen. Welche Methode ist das? Ich denke, Sie haben es vielleicht schon erraten. Ja, es ist die folgende Methode:

Code kopieren
Der Code lautet wie folgt:

<html>
<Titel>DEMO</Titel>
<Kopf>
<script type="text/javascript" src="swfobject_source.js"></script> _fcksavedurl=""swfobject_source.js"></script>"
</Kopf>
<Text>
<Formular-ID="Formular1">
<div id="Flashinhalt">
<a href="http://www.adobe.com/go/getflashplayer">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Adobe Flash Player herunterladen" border="0" />
</a>
</div>
</form>
<Skripttyp="text/javascript">
var so = neues SWFObject("http://www.pec365.com/Flash/20071113.swf", "meinFilm", "304", "367", "7", "#FFFFFF");
so.write("Flashinhalt");
</Skript>
</body>
</html>

Die Tausenden von Wörtern oben beschreiben nur, wie viele Umwege ich gemacht habe, auf welche Schwierigkeiten ich beim Lösen von Problemen gestoßen bin, wie ich aus den Schwierigkeiten herausgekommen bin, das erlernte Wissen genutzt und wieder gelernt habe. Obwohl es ein bisschen umständlich ist, haben Sie etwas wie ich gewonnen?

<<:  Implementierung der CSS-Rahmenlängensteuerungsfunktion

>>:  React Router 5.1.0 verwendet useHistory, um die Seitensprungnavigation zu implementieren

Artikel empfehlen

Dieser Artikel hilft Ihnen, JavaScript-Variablen und -Datentypen zu verstehen

Inhaltsverzeichnis Vorwort: Freundliche Tipps: Va...

So kennzeichnen Sie die Quelle und Herkunft von CSS3-Zitaten

Wegen der Epidemie werde ich zu Hause fast schimm...

Einige Tipps zum Website-Design

Tatsächlich haben wir in letzter Zeit viel über W...

CSS-Code zur Unterscheidung von IE8/IE9/IE10/IE11 Chrome Firefox

Das Debuggen der Website-Kompatibilität ist wirkl...

Webdesign-Erfahrung: Effizientes Schreiben von Webcode

Ursprünglich sollte dieses siebte Kapitel eine aus...

Anfänger lernen einige HTML-Tags (3)

Anfänger, die mit HTML in Berührung kommen, lerne...

Der Unterschied zwischen HTML-Name-ID und Klasse_PowerNode Java Academy

Name Geben Sie einen Namen für das Tag an. Format...

Die Lösung von html2canvas, dass Bilder nicht normal erfasst werden können

Frage Lassen Sie mich zunächst über das Problem s...

Führen Sie die Schritte zur Verwendung des Elements in vue3.0 aus

Vorwort: Verwenden Sie das Element-Framework in v...

Grundlegende Hinweise zu HTML (empfohlen)

1. Grundstruktur der Webseite: XML/HTML-CodeInhal...

Implementierung einer Login-Seite basierend auf layui

In diesem Artikelbeispiel wird der spezifische Co...