作為考試系統,必然要有對作弊的控制,在本版本考試系統中,通過javascript控制,實現對常用手法的禁用,此次需要禁用的是以下幾種:
- 禁用右鍵
- 禁用複製粘貼
- 禁用F5
- 禁用Backspace
- 禁用網路位置
- 禁用隨身碟
代碼如下:
<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+Cif(event.ctrlKey && event.keyCode==67){alert('考試過程中,已經禁用複製快速鍵CtrlL+C!');return false;}//禁用Ctrl+Vif(event.ctrlKey && event.keyCode==86){alert('考試過程中,已經禁用粘貼快速鍵CTRL+V!');return false;}//禁用F5if(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>
當然,僅僅這幾個控制是不夠的,還需要對訪問考試系統的ip進行限制,這個會在稍後的部落格中說明。