Предотвратить замену divx web plugin fron на элемент html5?
По какой-то причине я уверен, что люди в DivX думаю важны, нет простого способа предотвратить их плагин от замены всех видеоэлементов на вашей странице их фантазийным логотипом.
Мне нужно обходное решение для этого, сообщая плагину пропустить некоторые видео, а не заменять их воспроизводимым контентом.
Ответы
Ответ 1
Я обошел это, поместив пустой тег HTML 5, а затем разместив теги видеоигр в функции JavaScript в событии onload body. Затем видео появляется в обычном проигрывателе 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>
Ответ 2
В настоящее время нет API или средств для блокировки плагина divx от замены элементов видео с помощью их заполнителя.: - (
Ответ 3
я начал обратное проектирование divx-плагина, чтобы узнать, что можно сделать, чтобы взломать способ отключить его. Пример, включая полный исходный код divx-plugin, можно найти здесь: http://jsfiddle.net/z4JPB/1/
В настоящее время мне кажется, что возможное решение может работать следующим образом:
- создать "чистую" резервную копию методов
appendChild
, replaceChild
и insertBefore
- это должно произойти до того, как будет выполнен контент-script из chrome-extension.
- будет выполнен контент script, переопределяет упомянутые выше методы и добавляет event-слушателей к событиям
DOMNodeInsertedIntoDocument
и DOMNodeInserted
- после этого прослушиватели событий могут быть удалены и восстановлены исходные DOM-Методы. Теперь вы можете заменить встроенные элементы, созданные плагином, на видеоэлементы
Ответ 4
Кажется, что плагин заменяет видео только при наличии 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>');
}