tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
336
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    KICK KICK ist offline Mitglied Silber
    Registriert seit
    Aug 2003
    Beiträge
    73
    Hallo,

    bei meinem FireFox 3.5.7 werden Scripts nur dann dynamisch nachgeladen, wenn nach der "DOM injection" des Script-Elements ein "alert();" ausgegeben wird. ansonsten nicht.

    Hier ein konkretes Beispiel:
    HTML-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    	<title>Test [FF 3.5.7 - Bug?]</title>
    	<script type="text/javascript">
    	function load_script(path){
       		var head = document.getElementsByTagName("head")[0]; 
       		var script = document.createElement('script'); 
       		script.type = 'text/javascript'; 
       		script.src = path; 
       		head.appendChild(script);
    		
    		// Note: Wenn alert ausgegeben wird dann wird
    		// script/jquery auch geladen, ansonsten nicht
    		// Why******!******!******!******!******!******!******!******!******
    		//alert('bla');
    	}
    	</script>
    </head>
    <body>
    	<script type="text/javascript">
    	if(typeof jQuery != "function"){
    		load_script('lib/jquery.js');
    	}
    	jQuery(document).ready(function(){
    		alert('jQuery ready...');
    	});
    	</script>
    </body>
    </html>
    Zusätzliche Infos:
    1. Die jQuery Lib in obigen Beispiel wird bei mir (FireFox 3.5.7) nur geladen wenn das "alert" im ersten Script Bereich des Auszuges auch ausgegeben wird, ansonsten nicht.
    2. Das "alert" muss innerhalb der Funktion "script_load" ausgefüht werden - in allen anderen fällen wird das script innerhalb der funktion "script_load" ebenso nicht geladen.
    3. Beim ersten öffnen von FireFox nach Systemstart funktioniert "load_script" auch ohne dem alert output, ansonsten ist ebenso der "alert" output notwendig.
    4. Wenn der alert 1x in script_load ausgegeben wurde, funktionieren zukünftige script_load aufrufe auch ohne alert output. Man könnte es in etwa wie folgt beschreiben:
      Code :
      1
      2
      3
      4
      5
      
      var x=0; 
      function script_load(..){
        ... script lade stuff...
         if(!x){x=1; alert('bla');} // Muss min 1x ausgegeben werden damit ladevorgang funkt
      }
    Fragen:
    • Liegt es an meinem System?
    • Ist das ein bekannter FireFox 3 Bug oder normales FF 3 verhalten?
    • Enthält der Code fehler?
    • Gibt es alternativen, sonstige Ideen?

    Danke an alle mithelfenden
    Kick
     

  2. #2
    KICK KICK ist offline Mitglied Silber
    Registriert seit
    Aug 2003
    Beiträge
    73
    Nachtrag:
    HTML-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    	<title>Test [FF 3.5.7 - Bug?]</title>
    </head>
    <body>
    	<script type="text/javascript">
    	if(typeof jQuery != "function"){
    		document.write('<'+'script type="text/javascript" src="jquery.js"><'+'/script>');
    		// Ohne "alert" -> kein jquery
    		// Mit "alert" -> jquery wird geladen
    		// Note: "alert" muss NACH "document.write" ausgegeben werden...
    		// alert('bla');
    	}
    	jQuery(document).ready(function(){
    		alert('ready...');
    	});
    	</script>
    </body>
    </html>
    Auch hier wird das Script (in diesem Fall eben die jQuery Lib) nur geladen, wenn nach dem "document.write" die "alert" funktion aufgerufen wird.
     

  3. #3
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Das alert blockiert die Ausführung bis du es schließt. In der Zeit lädt der Browser der Skript. Es hat also nichts mit dem alert per se zu tun.

    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    function load_script(path, ready){
        var head = document.getElementsByTagName("head")[0]; 
        var script = document.createElement('script'); 
       script.type = 'text/javascript'; 
       script.src = path; 
     
       script.onload = ready;
     
       head.appendChild(script);
    }
     
    //Irgendwo später im Code
    load_script('foo.js', function() {
        //foo.js ist da
    });

    Der IE kennt natürlich onload bei Skript-Tags nicht: http://stackoverflow.com/questions/3...-synchronously

    Für de IE müsstest du pollen, z.B. mit window.setIntervall
     

Ähnliche Themen

  1. Nachladen von iFrame ohne jQuery, etc-.
    Von QUEST08 im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 18.04.11, 11:19
  2. JQuery Sortable Seite nachladen
    Von iLu_is_a_loser im Forum Javascript & Ajax
    Antworten: 7
    Letzter Beitrag: 30.08.10, 20:37
  3. Nächste/Vorherige Seite mit Ajax nachladen (jquery)
    Von typhoch2 im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 20.05.10, 18:16
  4. jquery.jqtransform und das Nachladen von Select-Optionen
    Von ConSoleM im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 28.04.10, 17:05
  5. Jar's in Applikation dynamisch nachladen
    Von DaSuckOOr im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 12.08.09, 11:37

Stichworte