12

出于某种原因,我确信 DivX 的人们认为这很重要,没有直接的方法可以阻止他们的插件用他们喜欢的徽标替换您页面上的所有视频元素。

我需要的是一种解决方法,告诉插件跳过一些视频,即不要用它们的可播放内容替换它们。

4

4 回答 4

9

我通过放置一个空的 HTML 5 视频标签,然后在 body onload 事件中的 JavaScript 函数中放入视频源标签来解决这个问题。然后视频会出现在普通的 HTML 5 播放器中,而不是 DivX 网络播放器中。

例如,这会给 DivX 播放器:

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

但这会给普通的 html 5 播放器:

    <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

目前,没有任何 API 或方法可以阻止 divx 插件用占位符替换视频元素。:-(

于 2011-01-23T19:59:16.843 回答
2

我开始对 divx-plugin 进行逆向工程,以找出如何破解禁用它的方法。一个例子,包括 divx-plugin 的完整源代码,可以在这里找到:http: //jsfiddle.net/z4JPB/1/

目前在我看来,一个可能的解决方案可以像这样工作:

  • 创建方法的“干净”备份appendChildreplaceChild并且insertBefore- 这必须在执行 chrome-extension 的内容脚本之前发生。
  • 内容脚本将执行,覆盖上述方法并将事件侦听器添加到DOMNodeInsertedIntoDocumentDOMNodeInserted事件
  • 之后,可以删除事件侦听器并恢复原始 DOM 方法。您现在应该能够用视频元素替换插件创建的嵌入元素
于 2012-05-19T12:58:38.917 回答
1

看来,该插件仅在标签中有src元素时才替换视频。video对我来说,它首先添加video标签,然后 - 在第二个线程中 - 添加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 回答