2015-01-15 4 views
5

Ich möchte die aktuelle Laufzeit eines HTML5-Videos erfassen, wenn eine bestimmte Schaltfläche angeklickt wird. ist hier mein CodeJS currentTime für HTML-Video-Tag funktioniert nicht auf Chrom

var vid = document.getElementById("video1");  
$('#cap-cue').click(function(){ 
    var curtime = vid.currentTime; 
    alert(curtime); 
}); 

Dies ist für die meisten der Browser perfekt funktioniert, aber nicht auf Chrom arbeiten.

+0

erhalten Sie Fehler in der Browser-Konsole, wenn dies nicht funktioniert? – Scriptable

+0

Es wäre einfacher, wenn Sie ein jsFiddle-Beispiel bereitstellen. –

+0

Es gibt keinen Grund dafür nicht zu funktionieren. Versuchen Sie 'curtime' und auch' vid' zu protokollieren. Hast du das dokumentbereit gemacht? – MrUpsidown

Antwort

1

Stellen Sie sicher, das Video-Element auf Dokument bereit:

$(function() { 
    var vid = document.getElementById("vid"); 
}); 

$('#getTime').on('click', function() { 
    var currentTime = vid.currentTime; 
    $('#currentTime').html(currentTime); 
}); 

JSFiddle demo

Getestet unter Windows mit Chrome, Firefox und Internet Explorer 10.

+0

Ich glaube nicht, dass es mit Dokument zu tun hat. Ich habe das versucht, nachdem ein Video abgespielt wurde, dann ändere ich die aktuelle Zeit und stoße auf dasselbe Problem (siehe unten). –

0

Das Problem (zumindest in Bezug auf Chrome) ist wahrscheinlich auf der Serverseite. Setzen Header set Accept-Ranges bytes in Ihrem .htaccess (diese this answer)

3

UPDATE 10/7/15: Ich entdecken, ist es eigentlich nicht mit Chrome Verwendung von current sondern mit der Art und Weise behandelt sie video.load().

Here is a bug report on the issue. Es ist mehr als 2,5 Jahre alt an diesem Punkt, und wird immer weiter in andere Berichte geschoben, aber es ist ein bekannter Fehler. Wenn sie es zu diesem Zeitpunkt noch nicht behoben haben, bin ich nicht sicher, dass es auf ihrer Prioritätenliste steht.

Dieser Fehler wurde in Ausgabe # 31014 zusammengeführt, die im August '15 als behoben markiert wurde, aber es scheint, dass Leute (mich eingeschlossen) immer noch das Problem haben.

Es scheint von dieser Tatsache, dass, wenn Sie versuchen, mehrere Anfragen an die gleiche URL, um jedes Medienelement (Audio oder Video) zu replizieren, dass die Netzwerkverbindung scheint in Chrome zu hängen. Ich habe das getestet, und genau das passierte in meinem Fall.

In diesem Thread wurden mehrere Problemumgehungen gemeldet, aber ich konnte keine von ihnen zur Arbeit bringen.


currentTime funktioniert nicht korrekt in Chrome. Ich habe das heute mit Videojs getestet, da dies der einzige Browser war, der das Problem aufwarf und dann auf den Standard-HTML5-Videoplayer umstellte und auf das gleiche Problem stieß.

Funktioniert in FF und Edge, funktioniert aber nicht in Chrome.

Noch seltsamer, wirft keinen Fehler, auch nicht über das Laden eines Videos. Zumindest bei videojs gibt es einen Fehler, dass es nicht geladen werden kann.

I filed a bug report with videojs today, was es mit ihrem Player zu tun hatte, aber nach mehr Überlegung scheint es ein Chrome-Problem zu sein. Ich wünschte, es würde zumindest einen Fehler für den Standard-HTML5-Player auslösen.

+0

Lösung [hier] (https://bugs.chromium.org/p/chromium/issues/detail?id=234779#c71) arbeitete für mich. – homerjam