raymond: Ajax-Div und zusätzlich Js laden, aber es geht nicht :.-(

Hallo auch.

Ich habe noch immer keine Lösung für mein Problem gefunden.

Mit Hilfe von Ajax und den entsprechenden Js-Dateien dazu (inkl prototype.js), habe ich 2 Div-Container erstellt. Navigation und "Content", wo der Inhalt geladen werden soll.
Kurz um, es funktioniert ja auch alles.

  • Doch wie ich inzwischen herausbekommen habe, wird das Javascript im zu ladenden Inhalt nicht mehr ausgeführt.

Dementsprechend gibt es dazu wohl einen Befehl, so dass ich das Javascript dennoch ausführen kann.
eval() oder soll's heißen.

Das Problem ist nur, ich weiß nicht wo dieser Befehl hinkommt und schon gar nicht, wie ich den richtig einbinden soll, damit der Inhalt MIT Js geladen wird.

Derzeit arbeite ich stur in html, kann aber jederzeit auf php umsteigen. Daran soll's ja nicht scheitern.

  • Warum muss ich denn Js laden?
    In meinem "Content" div, lade ich videos (flash) und der Player braucht dazu ja die "Swfobject.js". Und ohne die gibt's keinen Player.

Somit bitte ich sehr um einen Lösungsvorschlag, da ich schon seit mehreren Tagen an diesem äusserst kniffligen Problem sitze.
Und Beispielseiten wo ich mir den Quelltext anschauen kann, gibt es leider nicht für mich.

Mag und kann mir wer helfen?

Liebe Grüße, raymond

    • Doch wie ich inzwischen herausbekommen habe, wird das Javascript im zu ladenden Inhalt nicht mehr ausgeführt.
    new Ajax.Request("/adresse", {  
    	method: 'get',  
    	onSuccess: function (transport) {  
    		$('elementId').update(transport.responseText);  
    	}  
    });
    

    Mehr musst du eigentlich nicht machen, denn:

    http://www.prototypejs.org/api/element/update
    »If the new content contains any inline <script> tags (script tags containing the code directly, rather than referring to a separate file), update will extract them and evaluate them via String#evalScripts after updating the content.«

    Wenn das nicht geht, dann enthalten die script-Elemente irgendeinen Code, der zu dem Zeitpunkt nicht ausgeführt werden kann. Allerdings:

    In meinem "Content" div, lade ich videos (flash) und der Player braucht dazu ja die "Swfobject.js". Und ohne die gibt's keinen Player.

    ... sollte das Einbinden von Flash mittels swfobject.embedSWF(...) klappen, wenn du eine ID eines Elements angibst, das in dem gerade hinzugefügten HTML-Code drinsteckt.

    Mathias

    1. »» - Doch wie ich inzwischen herausbekommen habe, wird das Javascript im zu ladenden Inhalt nicht mehr ausgeführt.

      new Ajax.Request("/adresse", {

      method: 'get',
      onSuccess: function (transport) {
      $('elementId').update(transport.responseText);
      }
      });

      
      >   
      > Mehr musst du eigentlich nicht machen  
      > Mathias  
        
      Hört sich sehr gut an. Doch erstens weiß ich nicht wo ich diesen Snippet reinkopieren soll, zweitens weiß ich nicht wie mein Link dann aussehen soll und drittens....ich hab schon eine Krise. xD  
        
      Ich hoffe sehr, dass Du mir weiterhelfen kannst!?  
        
      Liebe Grüße, raymond
      
      1. Doch erstens weiß ich nicht wo ich diesen Snippet reinkopieren soll, zweitens weiß ich nicht wie mein Link dann aussehen soll und drittens....ich hab schon eine Krise. xD

        Du sollst den Snippet nirgendwo reinkopieren, du sollst verstehen, was er macht, und ggf. deine gegenwärtige Umsetzung entsprechend anpassen.

        Ich kann ich dir nicht sagen, was du ändern musst, bevor du uns deine bisherige Umsetzung gezeigt und erklärt hast.

        Mathias

        1. »» Ich kann ich dir nicht sagen, was du ändern musst, bevor du uns deine bisherige Umsetzung gezeigt und erklärt hast.

          Achso, ja das ist kein Problem. Alles ist derzeit in html!
          Ich habe eine Video-site: header (flash) und darunter 2 Div's.
          Ganz simple also.
          Links die Navi, rechts soll immer der Content geladen werden.
          Ich habe dazu eine "ajax.js" (wohl standard aus dem Inet) und zusätzlich die "prototype.js" mit in dieser Site geladen.

          Klicke ich nun auf einen Link, wird im rechten Div der Content geladen, was ja auch bisweilen so klappt. Nur wird halt das Js nicht nochmal ausgeführt.
          Mein Link sieht so aus:
          <a href="javascript:load('ordnername_xyz/index.html', 'content_funnystuff');" class="link1a">Lustiges Video</a>

          Ich habe echt keinen schimmer, wie ich noch meinen Link anpassen soll. -.-"

          Zudem habe ich in einem anderen Forum dieses hier herausbekommen:

          function evalScript(scripts)  
          {	try  
          	{	if(scripts != '')	  
          		{	var script = "";  
          			scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){  
          	       	                         if (scripts !== null) script += arguments[1] + '\n';  
           	        	                        return '';});  
          			if(script) (window.execScript) ? window.execScript(script) : window.setTimeout(script, 0);  
          		}  
          		return false;  
          	}  
          	catch(e)  
          	{	alert(e)  
          	}  
          }
          

          Man solle dann mit "scripts" diesen Response(?) ausführen lassen. Die Frage ist nur, wie sage ich dem "Link", dass er das machen soll?
          Ich bin mittlerweile schon fast ohne Haare, durch mein ewiges Haare raufen.
          Sollten noch Fragen bezüglich meiner Info's sein, bitte einfach stellen.
          Ich hoffe nur, dass ich bald das Js nachladen kann.
          *hoff*

          Liebe Grüße, raymond

          1. Prototype ist eine Allround-Bibliothek. Wenn du die einbindest, dann brauchst du nicht noch irgendeine »ajax.js« und auch keine zusätzliche Funktion evalScripts.

            Binde Prototype ein und schreibe dir eine Funktion, die du beim Klicken auf den Link aufrufst. Die hast du anscheinend schon, sie nimmt wohl eine URL und eine Element-ID an:

            load('ordnername_xyz/index.html', 'content_funnystuff');

            In diese Funktion packst du dann den Aufruf, den ich bereits geschrieben hatte, und verwendest die Funktions-Parameter anstelle von festen Werten:

            function load (url, elementId) {  
              
               new Ajax.Request(url, {  
                  method: 'get',  
                  onSuccess: function (transport) {  
                     $(elementId).update(transport.responseText);  
                  }  
               });  
              
            }
            

            Hier sollten die Scripte automatisch ausgeführt werden.

            Mathias

            1. Prototype ist eine Allround-Bibliothek. Wenn du die einbindest, dann brauchst du nicht noch irgendeine »ajax.js« und auch keine zusätzliche Funktion evalScripts.

              Ok, das habe ich soweit begriffen. Danke!

              Binde Prototype ein und schreibe dir eine Funktion, die du beim Klicken auf den Link aufrufst. Die hast du anscheinend schon, sie nimmt wohl eine URL und eine Element-ID an:

              load('ordnername_xyz/index.html', 'content_funnystuff');

              In diese Funktion packst du dann den Aufruf, den ich bereits geschrieben hatte, und verwendest die Funktions-Parameter anstelle von festen Werten:

              function load (url, elementId) {

              new Ajax.Request(url, {
                    method: 'get',
                    onSuccess: function (transport) {
                       $(elementId).update(transport.responseText);
                    }
                 });

              }

              
              >   
              > Hier sollten die Scripte automatisch ausgeführt werden.  
              >   
              > Mathias  
              
              
              Also, ich teste jetzt eine gute halbe Stunde herum und nichts klappt so wirklich.  
              Mein Link sah dann mal so aus:  
              ~~~html
              <a href=javascript:load function load (ordnername_xyz/index.html, content_funnystuff); {  
                
                 new Ajax.Request(url, {  
                    method: 'get',  
                    onSuccess: function (transport) {  
                       $(elementId).update(transport.responseText);  
                    }  
                 });  
                
              } class="link1a">Video_01</a>
              ~~~  
              Das klappte schonmal nicht.  
              Dann dachte ich ich begreife und packte Deinen Code in die ajax.js (nur prototype alleine macht's nicht!). Aber das ging überhaupt gar nicht.  
                
              Die ajax.js sieht derzeit wieder original so aus:  
              ~~~javascript
              function load(src, id) {  
              http_request = true;  
              if (window.XMLHttpRequest) {  
              http_request = new XMLHttpRequest();  
              if (http_request.overrideMimeType) {  
              http_request.overrideMimeType('text/xml');  
              }  
              } else if (window.ActiveXObject) { // IE  
              try {  
              http_request = new ActiveXObject("Msxml2.XMLHTTP");  
              } catch (e) {  
              try {  
              http_request = new ActiveXObject("Microsoft.XMLHTTP");  
              } catch (e) {}  
              }  
              }  
              if (!http_request) {  
              alert('Das verlangte Objekt konnte nicht erzeugt werden! Bitte ueberpruefen Sie Ihre JAVA Einstellungen!');  
              return false;  
              }  
                
              document.getElementById(id).innerHTML = "Das verlangte Objekt konnte nicht gefunden werden! Es fehlt oder wurde noch nicht verlinkt.";  
              http_request.onreadystatechange = function(){show(id)}  
              http_request.open('GET', src, true);  
              http_request.send(null);  
              }  
                
                
              function show(id) {  
              if (http_request.readyState == 4) {  
                
              document.getElementById(id).innerHTML = http_request.responseText;  
                
              }}  
              
              ~~~  
              Kannst'e Dir vorstellen, wie mein Kopf gerade qualmt? Ich teste, kopiere, ersetze, mache und tue......nichts klappt.  
              Hilfe... :.-(
              
              1. Hi,

                Also, ich teste jetzt eine gute halbe Stunde herum und nichts klappt so wirklich.
                Mein Link sah dann mal so aus:

                <a href=javascript:load function load (ordnername_xyz/index.html, content_funnystuff); {

                new Ajax.Request(url, {
                      method: 'get',
                      onSuccess: function (transport) {
                         $(elementId).update(transport.responseText);
                      }
                   });

                } class="link1a">Video_01</a>

                
                > Das klappte schonmal nicht.  
                  
                Wie kommst du denn auf die absurde Idee, eine komplette Funktionsdeklaration im href-Attribut eines Links unterzubringen?  
                  
                
                > http\_request.onreadystatechange = function(){show(id)}  
                > http\_request.open('GET', src, true);  
                > http\_request.send(null);  
                  
                Die Reihenfolge kann ungünstig sein, ich glaube mich zu erinnern, dass da ein Browser Probleme mit hat(te) - du solltest zuerst open aufrufen, dann den readyState-Handler setzen, und dann senden.  
                  
                
                > Kannst'e Dir vorstellen, wie mein Kopf gerade qualmt? Ich teste, kopiere, ersetze, mache und tue......nichts klappt.  
                  
                Und was haben deine Debugversuche ergeben?  
                  
                MfG ChrisB  
                  
                
                -- 
                Light travels faster than sound - that's why most people appear bright until you hear them speak.
                
                1. Wie kommst du denn auf die absurde Idee, eine komplette Funktionsdeklaration im href-Attribut eines Links unterzubringen?

                  Ha, naja, wenn man verzweifelt ist, probiert man alles einmal aus und greift nach jedem Stock dem einen zugeworfen wird. -.-"

                  »» http_request.onreadystatechange = function(){show(id)}
                  »» http_request.open('GET', src, true);
                  »» http_request.send(null);

                  Die Reihenfolge kann ungünstig sein, ich glaube mich zu erinnern, dass da ein Browser Probleme mit hat(te) - du solltest zuerst open aufrufen, dann den readyState-Handler setzen, und dann senden.

                  Ok, das habe ich nun getan, bringt nur leider auch nichts. :-(

                  »» Kannst'e Dir vorstellen, wie mein Kopf gerade qualmt? Ich teste, kopiere, ersetze, mache und tue......nichts klappt.

                  Und was haben deine Debugversuche ergeben?

                  Alsooooo. Ich habe die ajax.js nun (u.a.) mal so aufgebaut:

                  /* function load(src, id) {  
                  * http_request = true;  
                  * if (window.XMLHttpRequest) {  
                  * http_request = new XMLHttpRequest();  
                  * if (http_request.overrideMimeType) {  
                  * http_request.overrideMimeType('text/xml');  
                  * }  
                  * } else if (window.ActiveXObject) { // IE  
                  * try {  
                  * http_request = new ActiveXObject("Msxml2.XMLHTTP");  
                  * } catch (e) {  
                  * try {  
                  * http_request = new ActiveXObject("Microsoft.XMLHTTP");  
                  * } catch (e) {}  
                  * }  
                  * }  
                  * if (!http_request) {  
                  * alert('Das verlangte Objekt konnte nicht erzeugt werden! Bitte ueberpruefen Sie Ihre JAVA Einstellungen!');  
                  * return false;  
                  * }  
                  */  
                    
                  function load (url, elementId) {  
                    
                     new Ajax.Request(url, {  
                        method: 'get',  
                        onSuccess: function (transport) {  
                           $(elementId).update(transport.responseText);  
                        }  
                     });  
                    
                  }  
                    
                  document.getElementById(id).innerHTML = "Das verlangte Objekt konnte nicht gefunden werden! Es fehlt oder wurde noch nicht verlinkt.";  
                  http_request.open('GET', src, true);  
                  http_request.onreadystatechange = function(){show(id)}  
                  http_request.send(null);  
                  }  
                    
                    
                  function show(id) {  
                  if (http_request.readyState == 4) {  
                    
                  document.getElementById(id).innerHTML = http_request.responseText;  
                    
                  }}  
                  
                  

                  Da passiert dann gar nichts mehr. Man, dat is aber auch 'ne harte Nuss.
                  Mit anderen Worten, entweder ich stelle alles wieder auf den Ursprungszustand zurück und kann nur wieder mal den Text der geladenen Site sehen (jedoch nicht das Flashvideo) oder aber der Link geht gar nicht.

                  Was mache ich bloß nur falsch? Das kann doch nicht soo schwer sein ein Js im neuen Div-Content erneut ausführen zu lassen. Aber anscheinend bin ich nicht nur unwissend Ajax und seiner Ausführung gegenüber, sondern auch total verzweifelt.
                  Jeder bekommt das hin, nur ich mal wieder nicht.

                  Ich...weiß echt nicht mehr weiter....

                  1. Hi,

                    Wie kommst du denn auf die absurde Idee, eine komplette Funktionsdeklaration im href-Attribut eines Links unterzubringen?
                    Ha, naja, wenn man verzweifelt ist, probiert man alles einmal aus und greift nach jedem Stock dem einen zugeworfen wird. -.-"

                    Es wird dich kaum weiter bringen, "alles auszuprobieren", wenn es schon syntaktisch einfach nur Blödsinn ist, der nie und nimmer funktionieren kann.
                    Mit den Grundlagen der Syntax von JavaScript solltest du dich schon so weit auseinandersetzen, dass du mit sowas nicht noch unnötig Zeit verschwendest.

                    Und was haben deine Debugversuche ergeben?

                    Alsooooo. Ich habe die ajax.js nun (u.a.) mal so aufgebaut:

                    Kein grosser Unterschied zu vorher, ausser dass du deine Funktion load, in der du das Ajax-Objekt von Prototype nutzt, jetzt offenbar wieder in die Scriptdatei reingepackt hast - nur um dann statt dieses zu benutzen, doch wieder "von Hand" mit dem XMLHttpRequest-Objekt zu arbeiten.
                    Endscheid' dich doch langsam mal für einen Weg - die Möglichkeiten des Frameworks nutzen, oder es mit nativem JavaScript machen. Aber bitte hör' auf mit diesem vollkommen willkürlich wirkenden Mix aus beidem.

                    Ausserdem hast du damit meine Frage, was deine Debugginmaßnahmen ergeben haben, in keinster Weise beantwortet.

                    (Ist dir klar, was Debugging heisst? Damit meine ich nicht beliebiges Ausprobieren von immer neuen Variationen deines Codes, die alle nicht sehr viel sinnvoller sind als die vorhergehenden - sondern systematisches Untersuchen, was mit dem aktuellen Code passiert und was nicht, und wo Fehler auftreten. Wenn du mit diesem Vorgehen noch nicht vertraut bist, dann schlage ich vor, du übst dich erst mal darin ein bisschen, bevor du mit Frameworks herumhantierst.)

                    MfG ChrisB

                    --
                    Light travels faster than sound - that's why most people appear bright until you hear them speak.
                    1. Es wird dich kaum weiter bringen, "alles auszuprobieren", wenn es schon syntaktisch einfach nur Blödsinn ist, der nie und nimmer funktionieren kann.
                      Mit den Grundlagen der Syntax von JavaScript solltest du dich schon so weit auseinandersetzen, dass du mit sowas nicht noch unnötig Zeit verschwendest.

                      Ok ich bin dabei. Nur weiß ich halt nicht immer sofort, was wie wohin gehört.

                      »» > Und was haben deine Debugversuche ergeben?
                      »»
                      »» Alsooooo. Ich habe die ajax.js nun (u.a.) mal so aufgebaut:

                      Kein grosser Unterschied zu vorher, ausser dass du deine Funktion load, in der du das Ajax-Objekt von Prototype nutzt, jetzt offenbar wieder in die Scriptdatei reingepackt hast - nur um dann statt dieses zu benutzen, doch wieder "von Hand" mit dem XMLHttpRequest-Objekt zu arbeiten.
                      Endscheid' dich doch langsam mal für einen Weg - die Möglichkeiten des Frameworks nutzen, oder es mit nativem JavaScript machen. Aber bitte hör' auf mit diesem vollkommen willkürlich wirkenden Mix aus beidem.

                      Wie soll ich denn? Wenn ich nicht weiß was nun welcher Weg sein soll?

                      Ausserdem hast du damit meine Frage, was deine Debugginmaßnahmen ergeben haben, in keinster Weise beantwortet.

                      (Ist dir klar, was Debugging heisst? Damit meine ich nicht beliebiges Ausprobieren von immer neuen Variationen deines Codes, die alle nicht sehr viel sinnvoller sind als die vorhergehenden - sondern systematisches Untersuchen, was mit dem aktuellen Code passiert und was nicht, und wo Fehler auftreten. Wenn du mit diesem Vorgehen noch nicht vertraut bist, dann schlage ich vor, du übst dich erst mal darin ein bisschen, bevor du mit Frameworks herumhantierst.)

                      MfG ChrisB

                      Ich habe keine Ahnung wo ich meine Site Debuggen kann. Ich arbeite derzeit mit Dreamweaver. Dort gibt es zwar (F10) den Codeinspector, welcher mir aber auch nicht gerade viel erzählt. Fehler an sich enthält meine Site demnach nicht.

                      Offensichtlich ist dies hier wohl richtig:

                      function load (url, elementId) {  
                        
                         new Ajax.Request(url, {  
                            method: 'get',  
                            onSuccess: function (transport) {  
                               $(elementId).update(transport.responseText);  
                            }  
                         });  
                        
                      }
                      

                      Aber selbst wenn ich diesen unten an die prototype.js dran hänge, passiert schonmal gar nichts. Link geht einfach nicht.
                      Dasselbe passiert, wenn ich die ajax.js NICHT mitladen lasse.
                      Und wenn ich den oben aufgeführten Snippet in die Ajax.js reinkopieren soll, dann weiß ich nicht wie ich das machen muss.
                      Ich habe ja schon geschrieben, was dann passiert: Auch nichts! -.-"

                      Nun gut, offenbar will mich Ajax nicht und arbeite daher weiter mit den verhassten iFrames.

                      Ich persönlich finde es schade, dass ich das Js einfach nicht noch einmal laden kann/darf.
                      Die einen (im anderen Forum) schreiben, ich solle eval() benutzen. Aha.
                      Ja gut, wenn ich denn wüsste was die damit meinen!?!?
                      Hier widerum heisst's, ich soll diesen Snippet hier einfügen.
                      Gesagt und nicht ganz getan, funktioniert das irgendwie auch nicht.
                      Also was soll ich tun?
                      Aufgeben will ich nicht!

                      Aber offensichtlich muss ich dann doch mit iFrames weiter arbeiten, so sehr es mir auch stinkt. Denn entweder bekomme ich zu hören, dass ich ein Snippet irgendwie und irgendwo in der Js einfügen soll oder ich soll mit einem Begriff (wie eval() ) wasn anfangen wo ich nicht einmal weiß, was das Teil machen soll.

                      Ich lerne gerne, bin immer wieder offen für neue Welten und Technologien. Aber wie soll ich so lernen?

                      Es nervt mich, wie ich sicher Euch nerve. Mag sein.
                      Aber ich will und möchte Euch nicht verärgern. Ich versuche nur zu lernen...

                      1. Die einen (im anderen Forum) schreiben, ich solle eval() benutzen.

                        Wenn du gleichzeitig in sieben Foren fragst und mit vier alternativen Scripten gleichzeitig arbeitest, kommst du nie zum Ziel.

                        Hier widerum heisst's, ich soll diesen Snippet hier einfügen.
                        Gesagt und nicht ganz getan, funktioniert das irgendwie auch nicht.
                        Also was soll ich tun?

                        Nicht fünfundzwanzig Lösungswege gleichzeitig versuchen!
                        Wie gesagt: Entscheide dich für einen.
                        Ich habe dir einen skizziert - jetzt solltest du (vorzugsweise) den mal bis zum Ende verfolgen.

                        Fang noch einmal vorne an und arbeite mit der load-Funktion, die ich dir gezeigt habe.

                        http://molily.de/temp/ajaxload.html

                        In diesem Dokument - schau dir den Quelltext an - wird

                        1. die Prototype-Bibliothek eingebunden

                        2. die Funktion load deklariert (wie besprochen)

                        3. ein Link mit einem load()-Aufruf gesetzt
                           <a href="javascript:load('ajaxload2.html', 'ziel')">Mit Ajax laden</a>

                        4. ein Container definiert, in dem das HTML per Ajax geladen wird
                           <div id="ziel">Zielcontainer</div>

                        Dann gibt es http://molily.de/temp/ajaxload2.html, das ist die Datei, die per Ajax geladen wird. Da steht nur drin:

                        <p>Neuer Inhalt geladen mit JavaScript, das hier das aktuelle Datum ausgibt:</p>
                        <p id="zeit"></p>
                        <script type="text/javascript">
                        $('zeit').update(new Date());
                        </script>

                        Wenn man nun im ajaxload.html auf den Link klickt, wird dieses HTML geladen *und* das Script wird ausgeführt.

                        Das mal als sehr rudimentäre Demo - probiere es erst einmal so grundlegend aus.

                        Mathias

                        1. OOOH mein Gott, es funktioniert. Und ich danke Dir SEEEHR dafür !!!!!!!!
                          Vielen, vielen lieben Dank!
                          Doch dazu habe ich noch eine Frage:
                          Warum geht das nur online, nicht aber offline?

                          »» Die einen (im anderen Forum) schreiben, ich solle eval() benutzen.

                          Wenn du gleichzeitig in sieben Foren fragst und mit vier alternativen Scripten gleichzeitig arbeitest, kommst du nie zum Ziel.

                          Das Problem war für mich herauszubekommen, welches Script wohin gehört, da es mir nie einer richtig erklärt hat.

                          »» Hier widerum heisst's, ich soll diesen Snippet hier einfügen.
                          »» Gesagt und nicht ganz getan, funktioniert das irgendwie auch nicht.
                          »» Also was soll ich tun?

                          Nicht fünfundzwanzig Lösungswege gleichzeitig versuchen!
                          Wie gesagt: Entscheide dich für einen.
                          Ich habe dir einen skizziert - jetzt solltest du (vorzugsweise) den mal bis zum Ende verfolgen.

                          Fang noch einmal vorne an und arbeite mit der load-Funktion, die ich dir gezeigt habe.
                          [...]
                          Das mal als sehr rudimentäre Demo - probiere es erst einmal so grundlegend aus.

                          Mathias

                          Das ist so die atmeberaubenste, simpelste und beste Lösung, die ich jemals in meinem Leben erklärt bekommen habe.
                          Ich danke Dir sehr dafür.
                          Vielen Dank!!!

                          1. Achja und kann man diesen Code auch iwi in einer externen Js laden lassen? Also so, dass dieser nicht auf der Html-Site zu sehen ist?

                            1. Sry, aber ich muss nochmal was fragen!
                              Es funktioniert zwar alles so, jedoch verweigert es seinen Dienst, wenn ich einen Flashplayer laden lassen will.

                              Ich frage mich gerade, warum das so ist?
                              Wenn ich diesen dann aber in einen iFrame packe, dann läuft das alles.

                              Woran liegt das???

                              1. Ich frage mich gerade, warum das so ist?

                                Niemand kann hier hellsehen. Um dir zu sagen, was du falsch machst, musst du uns zeigen, was du machst - das heißt, uns den relevanten Quellcode zeigen, am besten die Dateien irgendwo hochladen, sodass man es sich ansehen kann und den Fehler suchen kann.

                                Ich habe noch mal ein Beispiel mit SWFObject gemacht:

                                http://molily.de/temp/ajaxflash/

                                Die Datei ajaxload2.html wurde wie folgt geändert:

                                <p>Flash:</p>  
                                <p id="flash">Hier wird ds Flash eingefügt</p>  
                                <script type="text/javascript">  
                                [code lang=javascript]swfobject.embedSWF("test.swf", "flash", "300", "120", "9.0.0");
                                

                                </script>[/code]

                                Also eine ganz normale Einbindung mit swfobject.embedSWF - wie ich schon in meiner ersten Antwort beschrieben hatte.

                                Mathias

                                1. Niemand kann hier hellsehen. Um dir zu sagen, was du falsch machst, musst du uns zeigen, was du machst...

                                  Ich bitte vielmals um Entschuldigung. Ich dachte, dass das Problem bekannt wäre und man mir so helfen können. Wie gesagt, entschuldigung.
                                  Eine Online-Demonstration gibt es weiter unten!

                                  Ich habe noch mal ein Beispiel mit SWFObject gemacht:
                                  [...]
                                  Also eine ganz normale Einbindung mit swfobject.embedSWF - wie ich schon in meiner ersten Antwort beschrieben hatte.
                                  Mathias

                                  Ja das ist richtig. Jedoch möchte ich ja nicht einfach nur den Player anzeigen lassen, sondern gleich mit das geladene Video.
                                  Daher weiß ich auch nicht, wie ich das umsetzen soll, was Du mir rätst.

                                  Zum "ZEIT"-Script möchte ich nochmal fragen, ob das so in Ordung ist, dass man das offline nicht ausführen/anschauen kann!?
                                  Wenn ich offline via Div oder direkt die Site mit dem Datum-/Zeit-Script aufrufe, wird es nicht angezeigt.
                                  Um zu verstehen warum das so ist, würde ich mich sehr darüber freuen mir dieses kurz zu erklären.

                                  Zudem habe ich nun eine Online-Demo geschrieben.
                                  Bitte schaut es Euch an:
                                  http://freenet-homepage.de/abtesten/index.html

                                  Man sieht nun sehr gut, dass das Video nicht via Div angezeigt wird. -.-"

                                  1. Hallo,

                                    du verwendest eine alte Version von SWFObject, die würde ich aktualisieren. Aber das ist nicht die Ursache für den Fehler.

                                    Die Ursache ist, dass du ein komplettes Dokument mit Ajax lädst. Der Sinn von Ajax ist aber das Nachladen von Dokumentteilen. Dieser Unterschied ist entscheidend - mit Ajax hast du nur ein Dokument, nicht zwei wie beim separaten Anzeigen im Browser bzw. bei der Nutzung von IFRAME.

                                    Es kommt Unsinn dabei heraus, wenn du ein ganzes Dokument in den body eines anderen Dokuments einbindest. Dann hast du nämlich zwei html-Elemente, zwei head-Elemente und zwei body-Elemente.

                                    Konkret versuchst du, die SWFObject-Bibliothek in video_01.html zu laden. Das geht natürlich nicht. Dieses script-Element, das eine externe Datei einbindet, wird von Prototypes update() nicht beachtet und SWFObject somit nicht geladen. Deshalb bekommst du in der JavaScript-Fehlerkonsole auch »SWFObject is not defined« (im Firefox: Menü Extras > Fehlerkonsole).

                                    SWFObject musst du, wie ich es in meiner Demo vorgemacht habe, bereits in der Datei einbinden, die den Ajax-Request absendet. Und die geladene Datei sollte nur aus dem bestehen, was du gegenwärtig im <body>...</body> dieser Datei hast.

                                    Mathias

                                    1. du verwendest eine alte Version von SWFObject, die würde ich aktualisieren. Aber das ist nicht die Ursache für den Fehler.

                                      Doch, das war mitunter einer der Hauptfehler!
                                      Ich habe gerade voll das breite Grinsen im Gesicht. Warum? Lesen wir gleich... ;-)

                                      SWFObject musst du, wie ich es in meiner Demo vorgemacht habe, bereits in der Datei einbinden, die den Ajax-Request absendet...

                                      Mathias

                                      Jooooo, alles klar! Ich bin heute sowas von dermaßen schief gegen den Schrank gelaufen, dass ich schon nicht mehr richtig denken kann...WAHAHAHAAHAH!

                                      Also das habe ich total übersehen und dadurch vergessen mit einzubauen: <script type="text/javascript" src="swfobject.js"></script>
                                      Desweiteren, wie eingangs beschrieben, war diese Js zu alt. Ebenso auch mein alter Player (welchen ich unbedingt verwenden wollte, da dieser keinen Link beinhaltet. Siehe: JW-Flvplayer
                                      Also habe ich das Ding neu gezogen (mal zum testen.....man kennt mich ja inzwischen und Du weißt ja nun auch, dass ich ziemlich chaotisch meinen Quellcode bestreite *lach*) und habe dann die Swfobject.js UND den Player ausgetauscht.
                                      Nach anfänglichen Problemen (mit Deinem Code kommt der Player leider nicht klar -.-") habe ich mir den Quelltext von dem (player)Beispiel angeguckt und einfach mal stumpf kopiert.
                                      Aldaaaaaaa, DAS KLAPPT! *schallendlach*
                                      Maaan ey, ich bin sooooooooo happy.
                                      Dank speziell Deines Wissen und Deiner Energie mit gegenüber, habe ich es nun endlich geschafft und nicht nur das; Ich habe vieles dazu gelernt in Bezug auf Ajax und die Funktionsweise.
                                      !!!! VIELEN DANK DAFÜR !!!! ;-)

                                      Und die geladene Datei sollte nur aus dem bestehen, was du gegenwärtig im <body>...</body> dieser Datei hast.

                                      Alles klar, habe verstanden. Ich wusste das ja auch nicht (wie auch? ^^) und werde es selbstredend umsetzen und auch beibehalten!!!

                                      Fazit: Problem gelöst. Viele Fragen sind beantwortet und ich bin einfach nur glücklich.
                                      Mathias....vielen Dank! ;-)

                              2. Hi,

                                Sry, aber ich muss nochmal was fragen!
                                Es funktioniert zwar alles so, jedoch verweigert es seinen Dienst, wenn ich einen Flashplayer laden lassen will.

                                Ich frage mich gerade, warum das so ist?

                                Flash dynamisch per JavaScript einzufügen kann je nach Browser unterschiedlich kompliziert sein. Insb. der IE muckt immer mal wieder rum, wenn man object und param per DOM erstellen und einfügen will, oder beim Einfügen per innerHTML nicht genau so vorgeht, wie er es gerne hätte.

                                Am besten ist es, wenn du sowas nicht selber machst, sondern die Aufgabe bewährten und gut ausgetesteten Scripten wie dem von Mathias erwähnten SWFObject überlässt.

                                Wenn ich diesen dann aber in einen iFrame packe, dann läuft das alles.

                                Dann erzeugst du in diesem Falle vermutlich den Code, der den Flashplayer einblenden soll, nicht dynamisch, sondern lässt ihn den Browser über den Iframe selber wieder als statisches Dokument laden?

                                MfG ChrisB

                                --
                                Light travels faster than sound - that's why most people appear bright until you hear them speak.
  1. Um JS nachzuladen, muss man per JS ein Script-Tag erstellen und dieses in den Head einhängen.

    Gruß, LX

    --
    RFC 1925, Satz 3: Mit ausreichendem Schub fliegen Schweine wunderbar. (...)