作为评测系统,必然要有对前台的控制,在本版本系统中,通过javascript控制,实现对常用手法的禁用,此次需要禁用的是以下几种:
- 禁用右键
- 禁用复制粘贴
- 禁用F5
- 禁用Backspace
- 禁用网上邻居
- 禁用U盘
代码如下
<span style="font-family:KaiTi_GB2312;font-size:18px;"><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>禁用demo</title>
<!--禁用复制粘贴F5及Backspace-->
<script type="text/javascript">
document.onkeydown=function(){
//禁用Ctrl+C
if (event.ctrlKey && event.keyCode==67)
{
alert('考试过程中,已经禁用复制快捷键CtrlL+C!');
return false;
}
//禁用Ctrl+V
if (event.ctrlKey && event.keyCode==86)
{
alert('考试过程中,已经禁用粘贴快捷键CTRL+V!');
return false;
}
//禁用F5
if (event.keyCode==116)
{
alert('考试过程中,已经禁用刷新页面键F5!');
return false;
}
//当焦点位置为非文本框时,禁用BackSpace
//IE下不兼容window.event.target,使用srcElement代替
if(event.keyCode==8){
var ev=window.event;
var obj=ev.srcElement;
if (obj.getAttribute('type')!='text'&& obj.getAttribute('type')!='textarea')
{
alert('非文本框中,禁用BackSpace键!');
return false;
}
}
}
</script>
<!--获取用户IP-->
<!--向form中添加数据-->
<script type="text/javascript" event="OnCompleted(hResult,pErrorobject, pAsyncContext)" for=foo>
document.forms[0].txtMACAddr.value=unescape(MACAddr);
document.forms[0].txtIPAddr.value=unescape(IPAddr);
document.forms[0].txtDNSName.value=unescape(sDNSName);
</script>
<META content="MShtml 6.00.2800.1106" name=GENERATOR>
<!--获取地址-->
<script type="text/javascript" event=OnobjectReady(objobject,objAsyncContext) for=foo>
if(objobject.IPEnabled != null && objobject.IPEnabled != "undefined" && objobject.IPEnabled == true){
if(objobject.MACAddress != null && objobject.MACAddress != "undefined")
MACAddr = objobject.MACAddress;
if(objobject.IPEnabled && objobject.IPAddress(0) != null && objobject.IPAddress(0) != "undefined")
IPAddr = objobject.IPAddress(0);
if(objobject.DNSHostName != null && objobject.DNSHostName != "undefined")
sDNSName = objobject.DNSHostName;
}
</script>
<!--嵌入ActiveX-->
<!--WMI的ActiveX插件-->
<object id="locator" classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></object>
<!--获取地址的ActiveX插件-->
<object id="foo" classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></object>
<script type="text/javascript">
var service = locator.ConnectServer();
var MACAddr ;
var IPAddr ;
var DomainAddr;
var sDNSName;
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
</script>
</head>
<!--禁用右键-->
<body oncontextmenu="window.event.returnValue=false" >
<form id=form1 method=post>
<input type="text" id="txtMACAddr">
<input type="text" id="txtIPAddr">
<input type="text" id="txtDNSName">
<input type="text" id="test" value="test" />
</form>
</body>
</html></span>
当然,仅仅这几个控制是不够的,还需要对访问考试系统的ip进行限制,这个会在稍后的博客中说明。