0

実際、私はC#4.0を使用してasp.netでオンラインテスト/試験のWebサイトを作成しています。また、試験を受けるために、ユーザーはボタンをクリックする必要があります。このボタンをクリックすると、JavaScript 関数を含むウィンドウが開きます。

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

}

そして、私が欲しいのは、試験の進行中に、ユーザーがタブを変更したり、自分のPCでフォルダーを開いたりした場合、ウィンドウ、つまり「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」がアクティブかどうかを確認するために、yourFunction() のロジックを正しくする必要があります。アクティブな場合は、警告メッセージ (「u are disqualified」) を表示し、「 test.aspx"

誰かこれで私を助けてください!!! お願いします...!!

4

1 に答える 1

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 を使用して行われました。

于 2012-04-28T04:16:48.940 に答える