12

何らかの理由で、DivX の人々が重要だと考えていることは確かです。彼らのプラグインがページ上のすべてのビデオ要素をファンシーなロゴに置き換えるのを防ぐ簡単な方法はありません。

私が必要としているのは、これに対する回避策であり、プラグインにいくつかのビデオをスキップするように指示します。つまり、それらを再生可能なコンテンツに置き換えないようにします。

4

4 に答える 4

9

これを回避するには、空のHTML 5ビデオタグを配置してから、bodyonloadイベントのJavaScript関数にビデオソースタグを配置します。その後、ビデオはDivXWebプレーヤーではなく通常のHTML5プレーヤーで表示されます。

例:これはDivXプレーヤーに次のようになります。

<video width="320" height="240" controls="controls">
  <source src="movie.mp4" type="video/mp4" />
</video>

しかし、これは通常のhtml5プレーヤーになります。

    <head>
    <script type="text/javascript">
    function changevid() {
       document.getElementById('vid').innerHTML = '<source src="inc/videos/sample1.mp4" type="video/mp4" />';
       document.getElementById('vid').load();
    }
    </script>
    </head>
    <body onload="changevid()">

       <video id="vid" width="800" height="450" controls="controls">    
       </video>

    </body>
于 2012-08-08T11:24:03.913 に答える
3

現時点では、divx プラグインがビデオ要素をプレースホルダーに置き換えるのをブロックする API または手段はありません。:-(

于 2011-01-23T19:59:16.843 に答える
2

divx-plugin を無効にする方法をハッキングする方法を見つけるために、divx-plugin のリバース エンジニアリングを開始しました。divx-plugin の完全なソースコードを含む例は、ここにあります: http://jsfiddle.net/z4JPB/1/

現在、考えられる解決策は次のように機能するようです。

  • appendChildメソッドの「クリーンな」バックアップを作成します。これはreplaceChildinsertBeforechrome-extension の content-script が実行される前に行う必要があります。
  • content-script が実行され、上記のメソッドがオーバーライドされ、イベント リスナーがDOMNodeInsertedIntoDocumentおよびDOMNodeInsertedイベントに追加されます。
  • その後、イベント リスナーを削除して、元の DOM メソッドを復元できます。これで、プラグインによって作成された埋め込み要素をビデオ要素に置き換えることができるはずです
于 2012-05-19T12:58:38.917 に答える
1

タグsrc内に要素がある場合にのみ、プラグインがビデオを置き換えているようです。video私にとっては、最初にvideoタグを追加してから、2番目のスレッドでsrcタグを追加することで機能しました。ただし、これは IE では機能しませんが、IE では完全なビデオ タグを一度に挿入することに問題はありませんでした。

したがって、次のコードはすべてのブラウザーで機能しました (もちろん、jQuery が必要です)。

var $container = $('video_container');
var video = 'my-movie';
var videoSrc = '<source src="video/'+video+'.mp4" type="video/mp4"></source>' +
    '<source src="video/'+video+'.webm" type="video/webm"></source>' +
    '<source src="video/'+video+'.ogv" type="video/ogg"></source>';

if(!$.browser.msie) {
    $container.html('<video autoplay loop></video>');
    // this timeout avoids divx player to be triggered
    setTimeout(function() {
        $container.find('video').html(videoSrc);
    }, 50);
}
else {
    // IE has no problem with divx player, so we add the src in the same thread
    $container.html('<video autoplay loop>' + videoSrc + '</video>');
}
于 2012-11-02T10:53:14.783 に答える