當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JavaScript——易班优课YOOC课群在线测试自动答题解决方案(二十一)禁止打开控制台解决方案
生活随笔
收集整理的這篇文章主要介紹了
JavaScript——易班优课YOOC课群在线测试自动答题解决方案(二十一)禁止打开控制台解决方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
Web安全——易班優課YOOC課群在線測試自動答題解決方案
問題描述
考試期間,打開控制臺,立即跳轉到
https://www.baidu.com/s?wd=別想復制黏貼了,還是好好學習吧
問題分析
關鍵源代碼
var ConsoleManager={onOpen:function(){alert("Console is opened")},onClose:function(){alert("Console is closed")},init:function(){var self = this;var x = document.createElement('div');var isOpening = false,isOpened=false;Object.defineProperty(x, 'id', {get:function(){if(!isOpening){self.onOpen();isOpening=true;}isOpened=true;}});setInterval(function(){isOpened=false;console.info(x);console.clear();if(!isOpened && isOpening){self.onClose();isOpening=false;}},200)}}ConsoleManager.onOpen = function(){try{window.open('https://www.baidu.com/s?wd=%E5%88%AB%E6%83%B3%E5%A4%8D%E5%88%B6%E9%BB%8F%E8%B4%B4%E4%BA%86%EF%BC%8C%E8%BF%98%E6%98%AF%E5%A5%BD%E5%A5%BD%E5%AD%A6%E4%B9%A0%E5%90%A7',target='_self');}catch(err){var a = document.createElement("button");a.onclick=function(){window.open('https://www.baidu.com/s?wd=%E5%88%AB%E6%83%B3%E5%A4%8D%E5%88%B6%E9%BB%8F%E8%B4%B4%E4%BA%86%EF%BC%8C%E8%BF%98%E6%98%AF%E5%A5%BD%E5%A5%BD%E5%AD%A6%E4%B9%A0%E5%90%A7',target='_self');}a.click(); }}ConsoleManager.onClose = function(){alert("Console is closed!!!!!")}ConsoleManager.init();使用定時器判斷是否打開控制臺。?
解決方案?
注:需要添加到腳本管理器插件中?
//取消打開控制臺的頁面跳轉//ConsoleManager=nullisOpening=trueConsoleManager.onOpen=()=>{ console.log("111")}window.onbeforeunload?=?function(){return?'要顯示的bai提示內容';}for(var i = 1; i < 1000; i++) {clearInterval(i);}運行結果
?
遺留問題
1、定時器是匿名的,所以只能連同考試倒計時的計時器一起刪除,導致考試倒計時停止。
2、只能在JavaScript執行完成,才能打開控制臺。
3、如果控制臺打開時,頁面刷新會發生跳轉。
參考文章
有沒有辦法一次清除所有JavaScript定時器?
js清除未知定時器的方法
JS設置定時器和清除定時器
總結
以上是生活随笔為你收集整理的JavaScript——易班优课YOOC课群在线测试自动答题解决方案(二十一)禁止打开控制台解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript——易班优课YOOC
- 下一篇: JavaScript——易班优课YOOC