实际上我正在使用c#4.0在asp.net上进行在线测试/考试的网站。为了提供考试,用户需要点击一个按钮,该按钮将打开一个带有JavaScript功能的窗口。
function OpenForm() {
window.open('Test.aspx', 'mywindow',
'fullscreen=yes,titlebar=no,toolbar=no,statusbar=no,menubar=no');
}
我想要的是,当考试正在进行时,如果用户更改其标签或在他/她的电脑中打开文件夹,那么我想关闭窗口,即“mywindow”。我知道在asp.net中不可能实现这一点,所以想知道如何在javascript或jquery中实现这一点?
我已经在网上搜索了几个答案,现在我知道每次加载“test.aspx”或“mywindow”页面时如何调用JavaScript函数。
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<script type="text/javascript">
function endRequestHandler(sender, args)
{
yourFunction();
}
function yourFunction()
{
alert("aaa");
}
function pageLoad()
{
if(!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack())
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
}
</script>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" Interval="6000">
</asp:Timer>
</ContentTemplate>
</asp:UpdatePanel>
</form>
//我需要纠正你的函数()中的逻辑以检查“mywindow”或“test.aspx”是否处于活动状态,如果是,那么我将在警报上显示一条消息(“你被取消资格”)然后关闭“test.aspx”
请有人帮我解决这个问题!请... !!
答案 0 :(得分:1)
我就是这样做的...我在Chrome / Opera / Firefox / IE中测试过...在IE中它要求允许关闭所有其他窗口的窗口自动关闭....不知道如何现在解决IE漏洞。
<script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$(window).focus();
$(window).blur(function () {
window.opener.BadStudent();
window.close();
});
$('#close').click(function () {
window.close();
});
});
</script>
编辑:此脚本放在他们最终会打开的页面上。另外,我添加了一个表单元素,以确保在选择子元素时窗口不会关闭,而且我没有任何问题。
编辑2:IE错误是由于javascript没有打开窗口。如此使用......
<a href="#" id="OpenWindow">Link</a>
然后......
<script type="text/javascript">
function BadStudent () {
alert("Your a bad student");
};
$(document).ready(function(){
$('#OpenWindow').click(function(e){
e.preventDefault();
Popup = window.open("@Url.Action("test")").focus();
});
});
</script>
子窗口上的脚本仍然有效。这也是使用jQuery为选择器完成的。