2011-10-20 9 views
1

JavaScriptからQuickTimeムービーを制御する際に問題が発生しました。 <video> HTML5要素を使用してHTMLページに動画を埋め込みました。ブラウザでサポートされていない場合(例:IE 8)(「Flashがない」という特定の要件がありますが、QuickTimeは許可されます)。ビデオはポップアップで表示されます。ポップアップが閉じられているときに、私はビデオの再生を停止したい。私はこれをHTML5でもうまくいくことができますが、クイックタイムコントロールは機能しません。JavaScriptからのQuickTimeムービーの制御がIEで機能しない

私のHTMLは次のようになります。

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(); 
} 

私はFirefoxでこれと同じQuickTimeのコードをテストしてみた - そしてそれは動作します:次のようになりますjavascript関数近い

<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> 

ポップアップ良い。さらに、動作すると主張する他のフォーラムの例は、IE 8では機能しません(例:http://lists.apple.com/archives/quicktime-api/2008/Mar/msg00187.html - IE 8では動作しません)。

document.getElementById('videoem').SetRate(0.0)が原因でObject does not support this property or methodエラーが発生しました。

私は他にどこを見るべきかわかりません。どんな助けでも大歓迎です。

答えて

1

私はそれを理解したと思います。この方法は、<object>要素ではなく、<embed>要素のIDを使用することです。最終的に得られるコードはこれです。

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> 

とJavaScript:

IE9はまだ埋め込みオブジェクトを作成しますが、いくつかの奇妙なタイプのといくつかの奇妙なのエラーがスローされますので、 "のtry-catch" が、必要とされる

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(); 
} 
コンテンツ。とにかく、今は正常に動作します。

関連する問題