[JS] HTML5 Video: onended Event

A

andrashee

Mitglied
Thread Starter
Dabei seit
03.09.2006
Beiträge
30
Reaktionspunkte
1
Hallo zusammen
An alle HTML bzw. JavaScript Hirnis unter euch :)
Ich bin gerade an einer Webseite wo ich HTML5 Video brauche (muss iPhone tauglich sein) mit einem Flashplayer Fallback für die M$ Produkte.
Das Ganze soll bei Klick in einem JS Overlay Popup erscheinen. Soweit so gut, eigentlich kein Problem und funzt auch. Jetzt möchte ich, dass sich das Popup wieder schliesst wenn der Film fertig ist. Da gibt es ja diesen wunderbaren onended Event. Nur funktioniert das bei mir leider nicht (weder Firefox noch Safari).

Ich habe folgenden vereinfachten BeispielCode:
Code:
	       var video = document.createElement('video');
		
		var source_mp4 = document.createElement('source');
		source_mp4.src = '<?php echo $this->movie_mp4;?>';
		source_mp4.type = 'video/mp4';
		video.appendChild(source_mp4);
		
		var source_ogv = document.createElement('source');
		source_ogv.src = '<?php echo $this->movie_ogv;?>';
		source_ogv.type = 'video/ogg';
		video.appendChild(source_ogv);
		
		video.controls = true;
		video.autoplay = true;
		video.loop = false;
		
		video.onended = function(e) {
			alert('ich erscheine leider nicht...');
		}
		document.body.appendChild(video);

Was ist falsch, wieso wird der onended Event nicht aufgerufen? Der Film kommt in beiden Browsern tadellos.

Herzlichsten Dank schonmal für anfällige Antworten.

Beste Grüsse
ahee
 
Zuletzt bearbeitet:
Versuch mal das on von onended wegzulassen.

Hier gibt es zumindestens kein onended, sonder nur ended.

interface HTMLMediaElement : HTMLElement {

// error state
readonly attribute MediaError error;

// network state
attribute DOMString src;
readonly attribute DOMString currentSrc;
const unsigned short NETWORK_EMPTY = 0;
const unsigned short NETWORK_IDLE = 1;
const unsigned short NETWORK_LOADING = 2;
const unsigned short NETWORK_NO_SOURCE = 3;
readonly attribute unsigned short networkState;
attribute DOMString preload;
readonly attribute TimeRanges buffered;
void load();
DOMString canPlayType(in DOMString type);

// ready state
const unsigned short HAVE_NOTHING = 0;
const unsigned short HAVE_METADATA = 1;
const unsigned short HAVE_CURRENT_DATA = 2;
const unsigned short HAVE_FUTURE_DATA = 3;
const unsigned short HAVE_ENOUGH_DATA = 4;
readonly attribute unsigned short readyState;
readonly attribute boolean seeking;

// playback state
attribute float currentTime;
readonly attribute float startTime;
readonly attribute float duration;
readonly attribute boolean paused;
attribute float defaultPlaybackRate;
attribute float playbackRate;
readonly attribute TimeRanges played;
readonly attribute TimeRanges seekable;
readonly attribute boolean ended;
attribute boolean autoplay;
attribute boolean loop;
void play();
void pause();

// controls
attribute boolean controls;
attribute float volume;
attribute boolean muted;
};
 
Besten Dank für die Antwort.
Ich habe die Methode von hier. Es sind wohl übergeordnet definierte Events.
Das Komische ist, dass bei keinen Events eine Reaktion geschieht. (onplay z.B.). Ich versuche es jetzt mal nicht in meiner CMS Umgebung, sondern in einem Plain HMTL Dokument. Vll liegt es daran.

Gruss
ahee
 
Zurück
Oben Unten