Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止Firefox在“.exitFullscreen()之后移动`_Javascript_Jquery_Css_Firefox_Fullscreen - Fatal编程技术网

Javascript 防止Firefox在“.exitFullscreen()之后移动`

Javascript 防止Firefox在“.exitFullscreen()之后移动`,javascript,jquery,css,firefox,fullscreen,Javascript,Jquery,Css,Firefox,Fullscreen,Firefox在退出全屏 img src=PNG 视频海报=GIF img src=SVG 律政司;nbsp; iframe srcdoc=“DIVdiv” 最初定义变量 var sx,sy; 进入全屏前保存滚动条位置 var d= document, r= d.documentElement, b= d.body; sx= r.scrollLeft || b.scrollLeft || 0; sy= r.scrollTop || b.scrollTop || 0; 当玩家全屏退出时 w

Firefox在退出全屏

img src=PNG
视频海报=GIF
img src=SVG
律政司;nbsp;
iframe srcdoc=“DIVdiv”

最初定义变量

var sx,sy;
进入全屏前保存滚动条位置

var d= document, r= d.documentElement, b= d.body;
sx= r.scrollLeft || b.scrollLeft || 0;
sy= r.scrollTop  || b.scrollTop  || 0;
当玩家全屏退出时

window.scrollTo(sx,sy);

希望这有帮助

这个答案完全归功于@Kaido,如果Kaido发布了答案,我会随时替换这个答案

我尝试使用scroll方法失败是因为我在收听click事件,而我本应该收听MozFullScreenChange的
onmozfullscreenchange

演示

防止Firefox在.exitFullscreen()之后移动
钮扣{
显示:块;
填充:0;
宽度:32px;
高度:32px;
文本对齐:居中;
光标:指针;
背景尺寸:包含;
}
.扩大{
背景:url(http://imgh.us/expand_2.svg)不重复;
}
A.
B
$(“按钮”)。单击(函数(e){
e、 预防默认值();
var tgt=$(this.prev();
fs(tgt[0]);
});
/*此功能适用于MCVE
||它使~select~能够删除并重新插入
||测试元素。通过这样做,我们可以看到
||测试元素在不同环境中的行为
||组合。我对FF的了解是
||当退出全屏~img~时
||最后一个问题是它会失去焦点
||视口将向上滚动到元素
||在它上面。
*/
$('sel1')。关于('change',函数(e){
var V=$(this.val();
var first=$('#'+V).find(':first').attr('id');
if($('#'+V).hasClass('media')){
$('#'+V).fadeOut('#'+first);
}否则{
$('#'+V).fadeIn('#'+first);
}
$('#'+V).toggleClass('media');
});
/*这两个职能部门负责
||全屏。
*///没有ms前缀,因为我不关心IE。
var isFullScreen=函数(){
return!!(document.fullscreenElement | | | document.webkitFullscreenElement | | | document.mozFullScreenElement);
}
//解决方案XXXXXXXXX]启动[XXXXXXXXXXXXX]
var yOffset;
document.onmozfullscreenchange=函数(){
如果(!isFullScreen()){
滚动到(0,yOffset);
}
};
//解决方案XXXXXXXXXX]结束[XXXXXXXXXXXXXX]
功能fs(目标){
如果(!isFullScreen()){
yOffset=pageYOffset;
if(target.requestFullscreen){
target.requestFullscreen();
}else if(target.webkitRequestFullscreen){
target.webkitRequestFullscreen();
}else if(target.mozRequestFullScreen){
target.mozRequestFullScreen();
}
}否则{
if(document.exitFullscreen){
document.exitFullscreen();
}else if(document.webkitExitFullscreen){
document.webkitExitFullscreen();
}else if(document.mozCancelFullScreen){
document.mozCancelFullScreen();
}
}
}

这就是你要找的吗?@KeerthanaPrabhakaran感谢你花时间发表评论。我阅读了这篇文章以及我希望从中获得的有希望的链接。不幸的是,他们没有一个解决我在使用Firefox时遇到的问题。基本上,你可以在进入全屏之前保存滚动条位置,然后退出全屏后将其还原。就我在谷歌搜索时所知,这似乎是web视频播放器的常见问题。@KeerthanaPrabhakaran这是一个好主意,我添加了一个简单的函数(虽然不是为了避免混淆)下一步,我仍然在考虑如何使用这些信息来停止滚动。我喜欢使用滚动条而不是<代码> y>代码>。如果你有任何值得回答的细节,那就太好了。你可以考虑打开一个问题给BugZILA,听起来确实像个bug,即使真的是WO。我无法让你的代码在使用或不使用我的coords函数的情况下工作,但你的建议让我走上了正确的道路。在@Kaido的评论中,链接到它的代码是成功的,我也明白为什么我无法让你或我的代码工作,是因为我试图聆听点击事件,而不是使用
onMozzFullScreenChange
Kaido成功举办的活动。+1感谢您的绝妙创意。很高兴它有所帮助!