Le contrôle du film quicktime de javascript ne fonctionne pas dans IE

J'ai eu un problème pour contrôler un film rapide depuis javascript. Je incorpore une vidéo dans ma page HTML à l'aide de <video> élément HTML5 – avec un délai de disponibilité rapide si le navigateur ne l'appuie pas (p. Ex. IE 8) (j'ai une exigence spécifique de "sans flash", mais l'heure d'ouverture est autorisée) . La vidéo s'affiche dans une fenêtre contextuelle; Lorsque le popup est fermé, je souhaite arrêter la lecture vidéo. Je peux le faire avec succès dans HTML5, mais le contrôle rapide ne fonctionne pas.

Mon html ressemble à ceci:

 <video width="360" height="298" autobuffer="autobuffer" controls="controls" id="video" tabindex="0"> <source type="video/mp4; codecs=&quot;avc1.42E01E, mp4a.40.2&quot;" src="/data/mmg-demo.mp4"></source> <source type="video/ogg" src="/data/mmg-demo.ogv"></source> <object width="360" height="298" id="videoem" codebase="http://www.apple.com/qtactivex/qtplugin.cab" classid="clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b"> <param value="/data/mmg-demo.mp4" name="src"> <param value="false" name="autoplay"> <param value="true" name="controller"> <embed width="360" height="298" name="videoem" pluginspage="http://www.apple.com/quicktime/download/" loop="false" controller="true" autoplay="false" src="../files/380/380523/video.mp4"> </object> </video> 

La fonction de javascript proche de la fenêtre apparaît comme suit:

 function closePopup { //stop html5 playback if it's there if(typeof document.getElementById('video').pause == 'function') { document.getElementById('video').pause(); } //stop playback of quicktime embed if it's there if(document.getElementById('videoem')) { document.getElementById('videoem').SetRate(0.0); } $('#demo-video').fadeOut(); } 

J'ai testé ce même code rapide de quicktime dans Firefox, et ça marche bien. De plus, des exemples dans d'autres forums qui prétendent travailler ne fonctionnent pas dans IE 8 (par exemple, voir http://lists.apple.com/archives/quicktime-api/2008/Mar/msg00187.html – ne fonctionne pas dans IE 8 ).

document.getElementById('videoem').SetRate(0.0) provoque l' Object does not support this property or method erreur de Object does not support this property or method .

Je ne sais pas où chercher. Toute aide est grandement appréciée.

D'accord, je pense que je l'ai compris. L'astuce consiste à utiliser l'ID à partir de l'élément <embed> et non l'élément <object> . Donc, le code final (de travail) que j'ai obtenu est le suivant.

HTML:

 <div id="mkt-video" style="position:fixed;width:360px;background-color:black;padding:10px;border:solid 2px white;display:none;z-index:100003"> <video id="video" width="360" height="298" controls="controls" autobuffer="autobuffer"> <source src="/data/mmg-demo.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' /> <source src="/data/mmg-demo.ogv" type="video/ogg" /> <object classid='clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b' width="360" height="298" codebase='http://www.apple.com/qtactivex/qtplugin.cab' id="videoem-object"> <param name='src' value="/data/mmg-demo.mp4" /> <param name='autoplay' value="false" /> <param name='controller' value="true" /> <param name="enablejavascript" value="true" /> <embed src="../files/380/380523/video.mp4" width="360" height="298" autoplay="false" controller="true" loop="false" pluginspage='http://www.apple.com/quicktime/download/' name="videoem" id="videoem"></embed> </object> </video> </div> 

Et Javascript:

 function closeVideo() { if(typeof document.getElementById('video').pause == 'function') { document.getElementById('video').pause(); } try { document.getElementById('videoem-object').SetRate(0.0); } catch (err) {} $('#mkt-video').fadeOut(); } 

Le "try-catch" est nécessaire, car IE9 crée toujours l'objet intégré, mais de type étrange et jette des erreurs de contenu étrange. Quoi qu'il en soit, ça marche bien maintenant.