html5 游戏不全屏,html5 实现的全屏模式下的问题与解决

1.实现->点击button实现全屏模式

// 进入全屏

enterFullScreen() {

let de: any;

de = document.documentElement;

if (de.requestFullscreen) {

de.requestFullscreen();

} else if (de.mozRequestFullScreen) {

de.mozRequestFullScreen();

} else if (de.webkitRequestFullScreen) {

de.webkitRequestFullScreen();

}

}

问题:Failed to execute 'requestFullscreen' on 'Element': API can only be initiated by a user gesture.

即这个方法只能由浏览器点击button事件来实现,

不能用js

$('#xxx').on('click', function () {

that.enterFullScreen();

});

$(#id).click(); // 无效

2.退出全屏->点击button事件

问题下面方法不能实现退出全屏

// 退出全屏 -浏览器点击事件无效

exitFullScreen() {

let de: any;

de = document.documentElement;

if (de.exitFullscreen) {

de.exitFullscreen();

console.log('12');

} else if (de.mozCancelFullScreen) {

de.mozCancelFullScreen();

console.log('13');

} else if (de.webkitCancelFullScreen) {

de.webkitCancelFullScreen();

console.log('14');

}

console.log('15');

}

3.监听键盘按下Esc事件

问题:在全屏模式下,浏览器无法监听Esc事件

及以下方法都不能监听:

// 无效

$(window).keydown(function(event) {

if (event.keyCode === 27) {

console.log('你按下了Esc');

}

});

// 无效

$(document).keydown(function(event) {

if (event.keyCode === 27) {

console.log('你按下了Esc');

}

});

解决:

ngOnInit() {

const that = this;

window.onresize = function () {

if (!that.checkFull()) {

// 要执行的动作

console.log('你按下了Esc');

}

};

}

checkFull() {

let isFull: any;

isFull = document.fullscreenEnabled || document.webkitIsFullScreen;

if (isFull === undefined) {

isFull = false;

}

return isFull;

}

文档收集:

https://www.zhangxinxu.com/wordpress/2012/10/html5-full-screen-api-firefox-chrome-difference/

https://blog.csdn.net/m0_37885651/article/details/79231670

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值