当前位置:首页 > 建站分享 > 正文内容

js 使用全屏实现防作弊

lujun3年前 (2021-12-27)建站分享506

 我在写在线考试系统的时候,有一个防作弊功能需要用到全屏,我通过查了一些网上的方法,接下来讲讲我是怎么将全屏用在防作弊功能里面。


一、全屏

function showFullScreen(){

    lastFullScreenFlag=true;//如果不需要实现防作弊功能,请注释此行

    if (!document.fullscreenElement &&!document.mozFullScreenElement 

    && !document.webkitFullscreenElement &&!document.msFullscreenElement) { 

        if (document.documentElement.requestFullscreen) {

            document.documentElement.requestFullscreen();

        } else if (document.documentElement.msRequestFullscreen) {

            document.documentElement.msRequestFullscreen();

        } else if (document.documentElement.mozRequestFullScreen) {

            document.documentElement.mozRequestFullScreen();

        } else if (document.documentElement.webkitRequestFullscreen) {

            document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);

        }

    }

}

二、退出全屏

function closeFullScreen(){

    if (document.exitFullscreen) {

        document.exitFullscreen();

    } else if (document.msExitFullscreen) {

        document.msExitFullscreen();

    } else if (document.mozCancelFullScreen) {

        document.mozCancelFullScreen();

    } else if (document.webkitExitFullscreen) {

        document.webkitExitFullscreen();

    }

}

三、防作弊功能实现

  实现思路:


1、进入界面,document绑定鼠标点击(onclick)事件


2、onclick事件调用showFullScreen(),进入全屏


3、用lastFullScreenFlag变量标记onresize事件发生之前是否全屏,true代表全屏


注:测试时发现不处于全屏状态按F12键会触发onsize事件调用if里面的代码。所以采用lastFullScreenFlag变量标记只有退出全屏才能调用if。


4、窗口(window)绑定窗口调整(onresize)事件监听窗口变化


5、checkFull()判断是否全屏


6、只有3次退出全屏的机会,3次机会用完将不能退出全屏


var exitFullscreenNum=3;

var lastFullScreenFlag=false;

document.onclick=function(){

    showFullScreen();

}

window.onresize = function() {

    var currentFullScreenFlag=checkFull();

    if (lastFullScreenFlag&&!currentFullScreenFlag) {

        exitFullscreenNum--;

        if(exitFullscreenNum>=0){

            alert("你还有"+(exitFullscreenNum)+"次退出全屏的机会!");

            lastFullScreenFlag=false;

        }

        else{

            alert("你已经不能退出全屏!");

            showFullScreen();

        }

    }

}

//判断是否全屏

function checkFull() {

    var isFull = false;

    if (document.fullscreenEnabled || document.msFullscreenEnabled ) {

        isFull = window.fullScreen || document.webkitIsFullScreen;

        if (isFull === undefined) {

            isFull = false;

        }

    }

    return isFull;

}  

上面代码只是实现了简单的防作弊功能,更完善的功能需要用数据库记录可退出全屏次数,在这里我就不写代码了。

————————————————

版权声明:本文为CSDN博主「旭东怪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_38974638/article/details/104751139

扫描二维码推送至手机访问。

版权声明:本文由5020工作室发布,如需转载请注明出处。

本文链接:http://5020.work/?id=11

分享给朋友:

相关文章

玩客云宝塔面板安装到外接硬盘

玩客云宝塔面板安装到外接硬盘

玩客云内置的存储空间非常小,安装宝塔后再安装几个环境就满了,还想多安装几个都安装不了只要将宝塔面板装到外接硬盘,想装多少环境、多大的数据库文件都可以放下啦已安装宝塔如果玩客云已经完成了安装宝塔面板,将其移动到外部硬盘1、博客有写过玩客云如何...

纯 js 实现打字效果

纯 js 实现打字效果

看到有人需要,就把主题里面的代码整理了出来代码就在下面具体怎么使用自己慢慢琢磨吧,挺简单的东西 并不复杂首先就 就这么几个属性classtxt-rotatedata-rotate 眼线是的内容 JSON 格式data-period...

dplayer + m3u8+ p2p加速

1、打开 CDNBye OMS  注册账号。添加域名-认证域名。按照里面步骤来即可。2、php代码:<html><head><title>847默认播放器</title...

html5 让video支持m3u8播放

我在网上查了半天,也测试了几个,但是最终我选择的是hls.jshls.js Git#git:https://github.com/video-dev/hls.js基本使用#<script src="https://...

如何在iframe中屏蔽弹出式广告,横幅广告和视频广告?

本文介绍了如何在iframe中屏蔽弹出式广告,横幅广告和视频广告?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!问题描述我正在嵌入包含退出弹出式横幅广告和视频广告的视频。当您在视频中的任何位置时,弹出窗...

M3U8文件和TS切片加了Referer验证的PHP代理示例

M3U8文件和TS切片加了Referer验证的PHP代理示例

主要使用 PHP 进行流量转发,需要消耗自己 PHP 服务器的带宽和流量。链接例子:https://rtmlive06.secureswiftcontent.com/rtmchannel/06-manifest.m3u8坛友一(kof97z...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。