何らかの理由で、DivX の人々が重要だと考えていることは確かです。彼らのプラグインがページ上のすべてのビデオ要素をファンシーなロゴに置き換えるのを防ぐ簡単な方法はありません。
私が必要としているのは、これに対する回避策であり、プラグインにいくつかのビデオをスキップするように指示します。つまり、それらを再生可能なコンテンツに置き換えないようにします。
何らかの理由で、DivX の人々が重要だと考えていることは確かです。彼らのプラグインがページ上のすべてのビデオ要素をファンシーなロゴに置き換えるのを防ぐ簡単な方法はありません。
私が必要としているのは、これに対する回避策であり、プラグインにいくつかのビデオをスキップするように指示します。つまり、それらを再生可能なコンテンツに置き換えないようにします。
これを回避するには、空の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>
現時点では、divx プラグインがビデオ要素をプレースホルダーに置き換えるのをブロックする API または手段はありません。:-(
divx-plugin を無効にする方法をハッキングする方法を見つけるために、divx-plugin のリバース エンジニアリングを開始しました。divx-plugin の完全なソースコードを含む例は、ここにあります: http://jsfiddle.net/z4JPB/1/
現在、考えられる解決策は次のように機能するようです。
appendChild
メソッドの「クリーンな」バックアップを作成します。これはreplaceChild
、insertBefore
chrome-extension の content-script が実行される前に行う必要があります。DOMNodeInsertedIntoDocument
およびDOMNodeInserted
イベントに追加されます。タグ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>');
}