问题描述
我提供了一项服务,可在将鼠标悬停在文本上时播放 mp4 视频(通过更改 video 标签的 src 属性)。
在网站上快速随机地悬停后,浏览器会闪烁部分屏幕或全部屏幕,并且行为异常。 令人困惑的是,这个问题发生在 Chrome、Edge 和 Opera 浏览器上,但不会发生在 Firefox 上。
function PlayVideoAfterHover(blobVideo){
var b = $("#redo").clone();
if (b == undefined || $(b)[0] == undefined) {
$("body").prepend(' <video id="redo" width="100%" height="100%" disablePictureInPicture autoplay="true" muted playsinline preload="none" type="video/mp4"></video> ');
b = $("#redo").clone();
}
$(b).attr('id','tempVid');
try {
if ($("#redo").attr('src') != '')
{
var oldURL = $("#redo").attr('src');
try {
URL.revokeObjectURL(oldURL);
$("#redo").removeAttr('src');
} catch (e) {
}
}
$(b).attr('src',window.URL.createObjectURL(blobVideo));
} catch (e) {
console.log(e);
}
$("body").append(b);
$(b).hide();
$(b)[0].onended = function () {
URL.revokeObjectURL(this.src);
playNext();
}
$(b)[0].onloadeddata = function () {
StopIdle();
$("#redo")[0].loop = IsEnd;
$(b)[0].loop = IsEnd;
$("#redo").attr('id','old_redo');
$(b).attr('id','redo');
$(b).show();
$(b).css('z-index',(9999) + cAvIdx);
cAvIdx = cAvIdx + 1;
$(b).attr('muted','true');
PlayVideo($(b)[0]);
//console.log('next time');
if (['iPad','iPhone','iPod'].indexOf(navigator.platform) < 0) {
$("#old_redo").remove();
}
};
}
function PlayVideo(video) {
try {
if (!IsPlaying(video)) {
video.play();
} else {
setTimeout(function () {
PlayVideo(video);
},100);
}
} catch (e) {
console.log('error in play:' + e.message);
}
}
function IsPlaying(video) {
return video.currentTime > 0 && !video.paused && !video.ended
&& video.readyState > video.HAVE_CURRENT_DATA;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)