防止网页被切屏

本文介绍了一段JavaScript代码,该代码旨在通过定时检查剪贴板数据来防止用户使用PrintScreen功能复制网页内容。虽然这种方法可能有一定的局限性,但它提供了一个思路来保护网站上的原创材料不被轻易复制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

防止被Print Screen
<script language="javascript">
<!--
function testclip(){
try {
   if(clipboardData.getData("Text")||clipboardData.getData("HTML")||clipboardData.getData("URL"))
    {
    null;
    }
   }
catch(e){
   clipboardData.setData("Text","")
   }
setTimeout("testclip()",500)
}
testclip();
//-->
</script>
以上代码都加在</head>前面  
### 实现全功能并加入机制 为了在实现全功能的同时增强作弊能力,可以通过结合多种技术手段来监控用户的操作行为。以下是具体的技术方案及其代码实现。 #### 1. **全模式** 通过 `requestFullscreen` 方法可以将网页换至全状态,确保用户无法轻易查看其他窗口的内容[^1]。 ```javascript function toggleFullScreen() { const elem = document.documentElement; if (!document.fullscreenElement) { elem.requestFullscreen().catch(err => console.error(`Error attempting to enable fullscreen mode: ${err.message}`)); } else { document.exitFullscreen(); } } ``` #### 2. **监听窗口焦点变化** 利用 `window.addEventListener('blur')` 和 `window.addEventListener('focus')` 可以实时监测当前窗口的状态,一旦发现用户换到其他窗口,则记录该事件并采取相应措施(如警告或强制提交试卷)。此外还可以统计次数以便进一步处理[^5]。 ```javascript let switchCount = 0; function handleWindowBlur() { switchCount++; console.warn(`User switched away from the exam window! Total switches: ${switchCount}`); // 如果超过设定的最大允许换次数则执行特定逻辑 if (switchCount > MAX_ALLOWED_SWITCHES) { alert("You have exceeded the allowed number of screen switches and will be logged out."); forceSubmitExam(); // 假设存在这样一个函数用于强制提交考试 } sendSwitchEventToServer(switchCount); } function handleWindowFocus() { console.log("User returned focus back to the exam window"); } // 初始化事件监听器 window.addEventListener('blur', handleWindowBlur); window.addEventListener('focus', handleWindowFocus); const MAX_ALLOWED_SWITCHES = 3; // 设置最大允许的次数 ``` #### 3. **检测屏幕尺寸异常** 某些情况下,学生可能会尝试在同一台设备上运行多个虚拟显示器或者调整浏览器窗口大小试图绕过系统的监督。因此还需要引入针对此类情形的安全护策略——即定期检查实际可用区域是否匹配预期值[^2]。 ```javascript function detectScreenSizeAnomalies() { const screenWidth = window.screen.width; const screenHeight = window.screen.height; const outerWidth = window.outerWidth; const outerHeight = window.outerHeight; if ((outerWidth !== screenWidth || outerHeight !== screenHeight)) { console.error("Detected unusual screen size configuration which may indicate cheating attempt!"); notifyAdminAboutSuspiciousActivity(); } } setInterval(detectScreenSizeAnomalies, CHECK_INTERVAL_MS); const CHECK_INTERVAL_MS = 5000; // 定义多久重新验证一次,默认五秒 ``` 以上方法综合运用能够有效提升在线测试环境下的安全性与公平性。值得注意的是,在开发过程中应当充分考虑到用户体验因素,避免因过度严格的控制而导致不必要的麻烦给合法使用者带来困扰。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值