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. 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. ![]() 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. ![]() 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
Name Charakter Name Charakter Information Nachric...
Inhaltsverzeichnis Vorwort: Freundliche Tipps: Va...
Hier kommt CentOS7 zum Einsatz und die Kernel-Ver...
Wegen der Epidemie werde ich zu Hause fast schimm...
Node.js löst das Problem verstümmelter chinesisch...
Tatsächlich haben wir in letzter Zeit viel über W...
Dieser Artikel veranschaulicht anhand von Beispie...
Das Debuggen der Website-Kompatibilität ist wirkl...
Ursprünglich sollte dieses siebte Kapitel eine aus...
Anfänger, die mit HTML in Berührung kommen, lerne...
Name Geben Sie einen Namen für das Tag an. Format...
Frage Lassen Sie mich zunächst über das Problem s...
Vorwort: Verwenden Sie das Element-Framework in v...
1. Grundstruktur der Webseite: XML/HTML-CodeInhal...
In diesem Artikelbeispiel wird der spezifische Co...