Diese Anzeige ist nur für
Nicht-Mitglieder sichtbar!

Jetzt kostenlos registrieren

SWF sofort laden und window.onload - Problemchen

Fragen zum Thema JavaScript können hier gestellt werden

Moderatoren: Basti, Guillermo, Ingo

SWF sofort laden und window.onload - Problemchen

Beitragvon pille am 22.10.2011, 16:28

Hallo,

ich hab ne Flashabfrage, die prüft ob der Besucher Flash installiert hat oder nicht (und hab noch ne Ladeanzeige dazu gebastelt). Das ganze sieht so aus:

Code: Alles auswählen
<script type="text/javascript">
   if(!FlashDetect.installed){
      window.onload = function noflash() {
      document.getElementById("banner").innerHTML = '<img src="files/banner_ersatz.jpg" alt="Flash-Banner-Ersatz"/>';
   }
   }
   else{
      window.onload = function flash() {
      document.getElementById("banner").innerHTML = '<object type="application/x-shockwave-flash" data="files/neu1.swf" width="900" height="300" id="homebanner"><param name="movie" value="files/neu1.swf" /><param name="loop" value="true" /><param name="menu" value="false" /><param name="scale" value="exactfit" /><param name="quality" value="high" /><param name="wmode" value="opaque"><param name="bgcolor" value="#191617" /></object>';        
      document.getElementById("banner_ladebalken").style.display = "none";
      }
      window.onunload = function()
      {
      document.getElementById("banner_ladebalken").style.display = "";
      }
   }
</script>


Wenn ich das jetzt richtig verstehe wird die Funktion erst ausgeführt (durch "window.onload") wenn die Seite komplett geladen ist oder? Ich möchte aber dass die SWF-Datei von Anfang an mitgeladen wird, damit das Laden nicht so lange dauert. Aber wie? Gibt es ne andere Möglichkeit Javacript-Funktionen aufzurufen ohne dass der Besucher irgendeine Aktion ausführen muss?
pille
Mitglied
 
Beiträge: 139
Registriert: 09.01.2007, 17:58
Diese Anzeige ist nur für
Nicht-Mitglieder sichtbar!
 
Jetzt kostenlos registrieren

Re: SWF sofort laden und window.onload - Problemchen

Beitragvon Shanair am 22.10.2011, 18:10

Moin!

Die Javascript Funktion "onload()" wird während des Ladens einer HTML Seite ausgeführt!

Was du in deinem Fall machen kannst ist die Funktion im body aufzurufen!

Code: Alles auswählen
<body onload="deineFunktion();"


Was du während des Ladens eines Inhalts anzeigst steht dir frei.
Ein Bild in einem div container, einen kleineren Flashfilm (Flash Player vorausgesetzt), einen Text etc....


Du kannst auch per PHP Javascript Funktionen ins File schreiben, somit bist du hier auch nochmal dynamischer...
AMD Phenom II X4 920 2,8Ghz, 3GB Ram, Windows 7 Prof., Ubuntu 10, Geforce 260 Gtx, LED HD 22", Adobe Web Premium CS5.5, Notepad++, Eclipse(Android), FlashDevelop, OpenOffice, Skype, Gimp, Firebug, BlueJ, Dia::: Individuelle Web Entwicklung!
Benutzeravatar
Shanair
Mitglied
 
Beiträge: 126
Registriert: 05.11.2009, 18:39
Wohnort: nahe Regensburg

Re: SWF sofort laden und window.onload - Problemchen

Beitragvon pille am 22.10.2011, 18:36

hmm aber bei dem onload im Body-Tag ist es doch definitiv so, dass die Funktion erst ausgeführt wird nachdem die komplette Seite geladen wurde oder hab ich da was falsch verstanden?
pille
Mitglied
 
Beiträge: 139
Registriert: 09.01.2007, 17:58

Re: SWF sofort laden und window.onload - Problemchen

Beitragvon Guillermo am 28.10.2011, 19:28

Dein eigentliches Problem liegt wohl darin dass du bei deiner Ladefunktion schon auf Elemente zugreifen willst die wahrscheinlich noch gar nicht existieren, wie z.B. das Element mit der ID "banner". Du kannst keine Attribute von Objekten verändern die noch nicht existieren.

Wenn du willst dass eine Aktion beim Laden ausgeführt wird kannst du bspw. den JavaScript Code einfach direkt in ein Scripttag im Headbereich schreiben. Dieser Code wird dann sofort ausgeführt nachdem er selbst geladen worden ist. Der Code im onLoad-Event des Body-Objekts wird erst danach ausgeführt. Das sieht man z.B. an diesem kleinen Beispiel:
Code: Alles auswählen

<html>
<head>
   <title>Test</title>
   <script type="text/javascript">
      alert("Page is loading!");
   </script>
</head>

<body onload="alert('Body is loading');">
   Hello world!
</body>
</html>

(Du kannst dir Testweise ja auch noch die Zeit [Date().getTime()] ausgeben lassen die zwischen dem ersten und dem zweiten "alert()" verstreicht, bei mir waren das nie mehr als eine Millisekunde.)

Ich bin mir ehrlich gesagt nicht sicher ob du SWF Dateien mit JavaScript überhaupt richtig vorladen kannst, du kannst dir mal diese JavaScript-Bibliothek (http://blog.deconcept.com/swfobject/) anschauen die SWF Objekte zur Verfügung stellt und manipulieren kann, ich hatte mal irgendwo gelesen dass ein Vorladen damit in gewisser Weise auch möglich sei.

Eine ganz andere Idee wäre es ein Layer über die Seite zu legen mit einem Hinweis darauf dass die Seite geladen wird der beim Ende des Ladevorgangs wieder ausgeblendet wird. Ich weiß aber natürlich nicht ob du das willst :)

Insgesamt glaube ich dass ein früheres Laden der SWF Datei nur wenig Sinn macht da die es sich nur um wenige Millisekunden (ca. 1-5) handeln würde die du damit gewinnst.

Viele Grüße,
Guillermo
Gebildet ist der, der weiß, wo er findet, was er nicht weiß.
Benutzeravatar
Guillermo
Moderator
 
Beiträge: 1093
Registriert: 01.10.2007, 18:18
Wohnort: Bayern

Re: SWF sofort laden und window.onload - Problemchen

Beitragvon pille am 03.11.2011, 19:45

okay gut, wenn es sich da eh nur um ein paar Milisekunden handelt dann lohnt sich der Aufwand nicht. Hatte nur irgendwie das Gefühl, dass die swf-Datei ungewöhnlich lange lädt aber wahrscheinlich liegts dann nicht am Startpunkt des Ladens sondern an der Dateigröße..

Ein Layer das anzeigt, dass da noch was lädt hab ich eh schon eingebaut von daher ist das ja nicht schlimm, der Besucher sieht dann ja dass sich da noch was tun müsste.
pille
Mitglied
 
Beiträge: 139
Registriert: 09.01.2007, 17:58


Zurück zu JavaScript

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste