dynamische Videos
Dietmar
- javascript
0 Manuel B.0 Dietmar0 Der Martin0 Dietmar0 Dietmar0 Der Martin0 Dietmar
0 Manuel B.
Hallo,
ich habe mit html und javascript einen Pictureviewer realisiert, in dem ich die Bilder dynamisch austauschen kann. Das sieht ungefähr so aus:
<IMG SRC="" Alt="Picture not found" id='idPic' class="Pic_ture" title="" hspace=0 vspace=0/>
und im Javascript
ID_Picture = document.getElementById("idPic");
ID_Picture.src = Pic_Image.src;
mit Pic_Image ein image object.
Das klappt auch sehr schön.
Nun hätte ich gern den Pictureviewer erweitert, so dass ich Bilder oder Videos sehen kann (halt alles, was man mit 'ner Digitalkamera machen kann).
Mein Ansatz war das gleiche einfach mit dem object tag zu versuchen:
<object data="" id="idObj" class="sPic_object">
Ihr Browser kann das Objekt leider nicht anzeigen!
</object>
und im Script:
ID_Object = document.getElementById("idObj");
ID_Object.data = "Photos/M012.mpg";
Anscheinend interpretiert der Browser (Fx) aber diesen neuen Wert von data nicht, d.h der Wert ist zwar korrekt (mit alert geprüft) wird aber nicht angezeigt. Größenänderungen klappen übrigens einwandfrei. Kann mir wer weiterhelfen?
Ich grüsse den Cosmos,
Anscheinend interpretiert der Browser (Fx) aber diesen neuen Wert von data nicht, d.h der Wert ist zwar korrekt (mit alert geprüft) wird aber nicht angezeigt.
Ich tippe mal drauf, das der Browsercache die Bildänderun verhindert.
Möge das "Self" mit euch sein
Ich grüsse den Cosmos,
Anscheinend interpretiert der Browser (Fx) aber diesen neuen Wert von data nicht, d.h der Wert ist zwar korrekt (mit alert geprüft) wird aber nicht angezeigt.
Ich tippe mal drauf, das der Browsercache die Bildänderun verhindert.
Möge das "Self" mit euch sein
Jetzt hast du mich abgehängt. Kannst du etwas genauer sein, wo ich nachschlagen kann?
Beachte, dass du es mit einem primitivem Wesen vom Planeten Erde zu tun hast, aus dem Sonnensystem am Rande der Milchstraße. Wir haben noch nicht das Wissen aus Beteigeuze erreicht.
Halo Dietmar,
Ich tippe mal drauf, das der Browsercache die Bildänderun verhindert.
Beachte, dass du es mit einem primitivem Wesen vom Planeten Erde zu tun hast, aus dem Sonnensystem am Rande der Milchstraße. Wir haben noch nicht das Wissen aus Beteigeuze erreicht.
aber du hast bestimmt eine Digitaluhr? :)
Grundsätzlich: Üblicherweise verwendet ein Browser einen sogenannten Cache, einen verborgenen Zwischenspeicher, in dem er die vom Server abgerufenen Daten mal auf Verdacht zwischenspeichert. Bei Elementen, die mehrfach in der Seite verwendet werden (Stylesheets, kleine Bilder, Icons) kann er dann beim zweiten bzw. jedem weiteren Zugriff die Ressource aus dem Cache holen anstatt sie wieder und wieder vom Server anzufordern. Das macht das Surfen flüssiger und spart Übertragungsbandbreite.
Es gibt aber Fälle, in denen das Cachen problematisch sein kann, nämlich bei Ressourcen, die sich durch serverseitige Aktivitäten häufig ändern, ohne dass der Client das mitbekommt. Dann zeigt er möglicherweise noch das Bild aus dem Cache, obwohl auf dem Server schon eine aktuellere Version vorliegt. Vor allem der IE macht sich in diesem Punkt gern das Leben einfach, weil er in der Grundeinstellung die Daten bevorzugt aus seinem Cache holt (falls dort vorhanden) und nur ab und zu ("automatisch") mal nachschaut, ob der Server etwas Besseres hat. Das hat schon viele Webautoren irritiert, weil sie sich absolut sicher waren, dass sie das geänderte Script/Bild/HTML-Dokument auf den Server hochgeladen haben der IE aber stur weiter die alte Fassung anzeigt. Deswegen braucht der ab und zu einen Tritt in den Hintern, indem man ihm seinen Cache löscht - oder, noch besser, man setzt die Einstellung sinnvoll ("Bei jedem Zugriff auf die Seite" anstatt "Automatisch").
Was Manuel dir hier sagen wollte, ist mir aber rätselhaft. Denn dadurch, dass du die src- bzw. data-Eigenschaft deines Objekts neu setzt, forderst du ja implizit eine neue Ressource an, die der Browser noch gar nicht im Cache haben kann - sie war schließlich noch gar nicht geladen.
Ich meine aber mal gelesen zu haben, dass der Browser generell nicht darauf reagiert, wenn [object].data verändert wird. Stattdessen müsste man die Änderung erzwingen, indem man das komplette object mit Javascript aus dem DOM entfernt und neu erzeugt.
So long,
Martin
Hallo Martin,
Halo Dietmar,
Ich tippe mal drauf, das der Browsercache die Bildänderun verhindert.
Was Manuel dir hier sagen wollte, ist mir aber rätselhaft.
Na dann bin ich ja nicht der einzige
Ich meine aber mal gelesen zu haben, dass der Browser generell nicht darauf reagiert, wenn [object].data verändert wird. Stattdessen müsste man die Änderung erzwingen, indem man das komplette object mit Javascript aus dem DOM entfernt und neu erzeugt.
Martin
Ich habe jetzt http://forum.de.selfhtml.org/archiv/2006/2/t123390/#m794392 gefunden. Daraus mache ich gerade
ID_Object.innerHTML ="<object data='" + pic_dir + pictures[Pic_curr]+"'></object>";
und
<span id='idObj' class="sPic_object">
Das sieht schon besser aus, ist aber noch nicht ganz okay (liegt scheinbar daran, dass doch noch mehr angepasst werden muss, als ich ursprünglich dachte). Aber danke auf alle Fälle, mit diesem Ansatz komme ich erst einmal weiter.
Hallo Martin,
Halo Dietmar,
Ich meine aber mal gelesen zu haben, dass der Browser generell nicht darauf reagiert, wenn [object].data verändert wird. Stattdessen müsste man die Änderung erzwingen, indem man das komplette object mit Javascript aus dem DOM entfernt und neu erzeugt.
Martin
Ich habe jetzt http://forum.de.selfhtml.org/archiv/2006/2/t123390/#m794392 gefunden. Daraus mache ich gerade
ID_Object.innerHTML ="<object data='" + pic_dir + pictures[Pic_curr]+"'></object>";
und
<span id='idObj' class="sPic_object">Das sieht schon besser aus, ist aber noch nicht ganz okay (liegt scheinbar daran, dass doch noch mehr angepasst werden muss, als ich ursprünglich dachte). Aber danke auf alle Fälle, mit diesem Ansatz komme ich erst einmal weiter.
Okay, jetzt sieht es so aus:
<span id='idObj' class="sPic_object">
</span>
und
ID_Object.innerHTML = "<object data='" +Pic_ImageO.url+ "'></object>";
mit style sPic_Object
.sPic_object {
position:absolute; top:0px; left:0px;
width: 100%;
height: 100%;
color: #ffffff;
}
FASST bestens.
Jetzt wird das Video jedoch in einem separaten Fenster gezeigt, nicht im Browser. Wenn
<object data="Photos/M012.mpg" class = "sPic_object"> </object>
direkt im body steht, also nich innerhalb von <span>, erscheint das Video im Browser.
Wie kann ich das Video dazu zwingen, im Browser zu erscheinen? Ist wahrscheinlich nur eine Option im Style, oder?
n'Abend!
Jetzt wird das Video jedoch in einem separaten Fenster gezeigt, nicht im Browser.
das ist auch sehr anständig.
Wenn
<object data="Photos/M012.mpg" class = "sPic_object"> </object>
direkt im body steht, also nich innerhalb von <span>, erscheint das Video im Browser.
Bei _dir_ und mit _deinen_ Browsereinstellungen! Das muss bei anderen Benutzern nicht unbedingt so sein! Ich lasse z.B. Videos, PDFs und ähnliche eingebettete Ressourcen grundsätzlich in einem eigenen Fenster mit der dafür zuständigen Applikation öffnen.
Davon abgesehen kann ich mir nicht vorstellen, dass ein umschließendes neutrales Element wie z.B. ein span für ein so unterschiedliches Verhalten verantwortlich ist. By the way, ist das überhaupt zulässig, object (ein Blockelement) in span (Inlineelement) zu verschachteln? Der Validator sagt ja. Seltsam ...
Wie kann ich das Video dazu zwingen, im Browser zu erscheinen?
Gar nicht. Denn letztendlich weißt du nicht einmal, ob der Besucher überhaupt eine Software installiert hat, die Videodateien abspielen kann, und wenn ja, ob die ein Browser-Plugin zur Verfügung stellt.
So long,
Martin
Bei _dir_ und mit _deinen_ Browsereinstellungen! Das muss bei anderen Benutzern nicht unbedingt so sein! Ich lasse z.B. Videos, PDFs und ähnliche eingebettete Ressourcen grundsätzlich in einem eigenen Fenster mit der dafür zuständigen Applikation öffnen.
Mmmh, Recht hast du, ich werde es noch auf anderen Systemen ausprobieren. Für den Moment bin ich erst einmal zufrieden, wenn es bei mir okay ist.
Davon abgesehen kann ich mir nicht vorstellen, dass ein umschließendes neutrales Element wie z.B. ein span für ein so unterschiedliches Verhalten verantwortlich ist. By the way, ist das überhaupt zulässig, object (ein Blockelement) in span (Inlineelement) zu verschachteln? Der Validator sagt ja. Seltsam ...
Wie kann ich das Video dazu zwingen, im Browser zu erscheinen?
Gar nicht. Denn letztendlich weißt du nicht einmal, ob der Besucher überhaupt eine Software installiert hat, die Videodateien abspielen kann, und wenn ja, ob die ein Browser-Plugin zur Verfügung stellt.
Der Trick war, das class element in das object zu bringen und mit Positions-Angaben zu versehen. Ob es auch mit anderen Plug-ins und Browsern funktioniert ist natürlich nicht sicher.
So long,
Martin
Gut's Nächtle
Ich grüsse den Cosmos,
Was Manuel dir hier sagen wollte, ist mir aber rätselhaft.
Ich wollte damit sagen, das ich ein ähnliches Problem mit einer Webcam hatte. Da wurde immer das alte Bild geladen.
Allerdings war da der Dateiname immer gleich, daher kann es durchaus sein, das es in diesem Fall gar nicht relevant ist. In diesem Fall mein erstes Posting einfach ignorieren ;)
Möge das "Self" mit euch sein