日期:2014-05-16 浏览次数:20449 次
最近在做一个考试系统,客户要求考试页面打开后需要全屏显示,并且除本页面外不能进行其他操作,我查了一些相关资料了解到,利用Javascript并不能真正屏蔽掉ALT+TAB键,因为这是系统级快捷键,所以我使用了其他方法进行处理,当窗口失去焦点时自动触发窗口关闭事件,然后再询问用户是提交并完成考试还是取消关闭,通过这个方法初步达到了禁止用户切换窗口的操作,具体代码如下:
aaa.html
<script type="text/javascript">
var win;
function ope(){
//打开窗口,'fullscreen'控制新窗口全屏显示
win = window.open('bbb.jsp','www_loveme_lingd_net','fullscreen');
}
</script>
<input type="BUTTON" name="FullScreen" value="全屏显示" onClick="ope()">
?
bbb.html
<script type="text/javascript">
//失去焦点后调用的函数
function c(){
window.close();
}
//为窗口注册失去焦点事件
window.onblur = c;
//当关闭窗口时提示是否提交考试
window.onbeforeunload = function() {
return "当前数据还没有保存,关闭、刷新或切换窗口会自动完成考试,是否继续?";
}
//窗口关闭后给出提示
window.onunload = function() {
alert("已成功提交考试!");
}
//屏蔽鼠标右键
function document.oncontextmenu()
{
event.returnValue=false;
}
//屏蔽F1帮助
function window.onhelp()
{
return false;
}
//屏蔽其他功能键
function document.onkeydown()
{
var k = window.event.keyCode;
if (k == 116)//屏蔽 F5 刷新键
{
window.event.keyCode = 0;
window.event.returnValue = false;
}
if (window.event.ctrlKey && k == 82)//Ctrl + R
window.event.returnValue= false;
if (window.event.ctrlKey && k == 78)//屏蔽Ctrl+n
window.event.returnValue = false;
if (window.event.ctrlKey && k == 87)//屏蔽Ctrl+w
window.event.returnValue = false;
if (event.shiftKey && k==121)//屏蔽 shift+F10
window.event.returnValue = false;
if (window.event.srcElement.tagName == "A" && window.event.shiftKey)
window.event.returnValue = false;//屏蔽 shift 加鼠标左键新开一网页
if (window.event.altKey && k == 115)//屏蔽Alt+F4
{
window.showModelessDialog("about:blank","","dialogWidth:1px;dialogheight:1px");
return false;
}
if (window.event.altKey &&
(k == 37 || //屏蔽 Alt+方向键 ←
k == 39)) //屏蔽 Alt+ 方向键→
{
alert("不准你使用ALT+方向键前进或后退网页!");
event.returnValue=false;
}
}
</script>
<body >
<h1>考试窗口</h1>
</body>
Hello
?在实现时也遇到了一些问题,比如在JSP页面中,有些IE就无法全屏显示,有可能是IE版本的问题。