本文总结JavaScript实现全屏与退出全屏的核心代码,重点分析fullscreenEnabled属性的浏览器兼容差异。针对IE11无法识别该属性导致的状态判断失效问题,提供了基于自定义标记位的解决方案,确保多浏览器环境下全屏状态控制的准确性。
JavaScript全屏API实现与IE11兼容方案
相关实现代码如下:
window.isflsgrn = false;//ie11以下是否进入全屏标志,true为全屏状态,false为非全屏状态
window.ieIsfSceen = false;//ie11是否进入全屏标志,true为全屏状态,false为非全屏状态
//跨浏览器返回当前 document 是否进入了可以请求全屏模式的状态
function fullscreenEnable(){
var isFullscreen = document.fullscreenEnabled ||
window.fullScreen ||
document.mozFullscreenEnabled ||
document.webkitIsFullScreen;
return isFullscreen;
}
//全屏
var fScreen = function(){
var docElm = document.documentElement;
if (docElm.requestFullscreen) {
docElm.requestFullscreen();
}
else if (docElm.msRequestFullscreen) {
docElm.msRequestFullscreen();
ieIsfSceen = true;
}
else if (docElm.mozRequestFullScreen) {
docElm.mozRequestFullScreen();
}
else if (docElm.webkitRequestFullScreen) {
docElm.webkitRequestFullScreen();
}else {//对不支持全屏API浏览器的处理,隐藏不需要显示的元素
window.parent.hideTopBottom();
isflsgrn = true;
$("#fsbutton").text("退出全屏");
}
}
//退出全屏
var cfScreen = function(){
if (document.exitFullscreen) {
document.exitFullscreen();
}
else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
}
else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
}else {
window.parent.showTopBottom();
isflsgrn = false;
$("#fsbutton").text("全屏");
}
}
//全屏按钮点击事件
$("#fsbutton").click(function(){
var isfScreen = fullscreenEnable();
if(!isfScreen && isflsgrn == false){
if (ieIsfSceen == true) {
document.msExitFullscreen();
ieIsfSceen = false;
return;
}
fScreen();
}else{
cfScreen();
}
})
//键盘操作
$(document).keydown(function (event) {
if(event.keyCode == 27 && ieIsfSceen == true){
ieIsfSceen = false;
}
});
//监听状态变化
if (window.addEventListener) {
document.addEventListener('fullscreenchange', function(){
if($("#fsbutton").text() == "全屏"){
$("#fsbutton").text("退出全屏");
}else{
$("#fsbutton").text("全屏");
}
});
document.addEventListener('webkitfullscreenchange', function(){
if($("#fsbutton").text() == "全屏"){
$("#fsbutton").text("退出全屏");
}else{
$("#fsbutton").text("全屏");
}
});
document.addEventListener('mozfullscreenchange', function(){
if($("#fsbutton").text() == "全屏"){
$("#fsbutton").text("退出全屏");
}else{
$("#fsbutton").text("全屏");
}
});
document.addEventListener('MSFullscreenChange', function(){
if($("#fsbutton").text() == "全屏"){
$("#fsbutton").text("退出全屏");
}else{
$("#fsbutton").text("全屏");
}
});
}
需要特别关注 fullscreenEnabled 参数,网络上关于其定义存在多种解读:部分观点认为它用于监控浏览器是否具备请求全屏模式的条件,另一些观点则将其视为判断浏览器是否支持全屏功能的标志。实际开发中该属性确实引发兼容性问题,例如在 IE11 浏览器中无法正确识别此属性,因此必须额外设置独立的标记变量来手动控制 IE11 的全屏状态切换。
以上为本文关于全屏事件处理的全部内容,希望这些代码与说明能对您的学习或工作有所帮助。若在使用过程中遇到疑问,欢迎留言交流,感谢大家对本站的支持!