Как проверить, активна ли вкладка mywindow в браузере или нет в asp.net 4.0?

На самом деле я делаю веб-сайт онлайн-теста/экзамена в asp.net, используя С# 4.0. А для сдачи экзамена пользователю необходимо нажать на кнопку, которая откроет окно с функцией JavaScript.

    function OpenForm() {
 window.open('Test.aspx', 'mywindow',
'fullscreen=yes,titlebar=no,toolbar=no,statusbar=no,menubar=no');

}

И то, что я хочу, это то, что во время экзамена, если пользователь меняет вкладку или открывает папку на своем компьютере, я хочу закрыть окно, то есть «мое окно». я знаю, что это невозможно в asp.net, поэтому хочу знать, как я могу добиться этого в javascript или jquery?

я искал в сети несколько ответов, и теперь я знаю, как вызывать функцию JavaScript каждый раз, когда загружается моя страница «test.aspx» или «mywindow».

<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> 

// мне нужно исправить логику в yourFunction(), чтобы проверить, активны ли «mywindow» или «test.aspx» или нет, если да, то я буду отображать сообщение при предупреждении («вы дисквалифицированы»), а затем закрыть « test.aspx"

Пожалуйста, помогите мне с этим!!! пожалуйста...!!


person Subhojit Mukherjee    schedule 28.04.2012    source источник


Ответы (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 для селекторов.

person Jared    schedule 28.04.2012
comment
Большое спасибо, мистер Джаред. Я попробую это в своем проекте и дам вам знать, если у меня возникнут проблемы. В любом случае спасибо большое. :) - person Subhojit Mukherjee; 28.04.2012
comment
@SubhojitMukherjee Нет проблем. Поскольку это ваш первый пост здесь, когда вы задаете вопрос и получаете помощь. Если ответ решает вашу проблему, обязательно примите ответ и проголосуйте за него (это поможет как вашему рейтингу, так и тому, кто ответил). - person Jared; 28.04.2012