日期:2014-05-16  浏览次数:20382 次

JavaScript控制页面全屏,并且禁止使用ALT+TAB键切换

最近在做一个考试系统,客户要求考试页面打开后需要全屏显示,并且除本页面外不能进行其他操作,我查了一些相关资料了解到,利用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版本的问题。