Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
页面加载期间的模式弹出窗口有时不隐藏:ASP.NET C#Javascript Jquery_Javascript_C#_Jquery_Html_Asp.net - Fatal编程技术网

页面加载期间的模式弹出窗口有时不隐藏:ASP.NET C#Javascript Jquery

页面加载期间的模式弹出窗口有时不隐藏:ASP.NET C#Javascript Jquery,javascript,c#,jquery,html,asp.net,Javascript,C#,Jquery,Html,Asp.net,我有一个ajax模式弹出窗口,在页面加载期间显示,然后在页面加载完成时隐藏,所有这些代码都发生在母版页中。问题是,对于某些按钮单击,它们不会触发要调用的javascript event window.onload或asp内的pageload complete或render事件。它们只调用卸载前事件和提交事件。发生这种情况时,我注意到弹出窗口不会隐藏,因为从未调用过window.onload。否则,它的工作非常出色。是否有人知道一种方法,我可以确保弹出窗口始终隐藏,而不必在每次按钮单击时隐藏弹出窗

我有一个ajax模式弹出窗口,在页面加载期间显示,然后在页面加载完成时隐藏,所有这些代码都发生在母版页中。问题是,对于某些按钮单击,它们不会触发要调用的javascript event window.onload或asp内的pageload complete或render事件。它们只调用卸载前事件和提交事件。发生这种情况时,我注意到弹出窗口不会隐藏,因为从未调用过window.onload。否则,它的工作非常出色。是否有人知道一种方法,我可以确保弹出窗口始终隐藏,而不必在每次按钮单击时隐藏弹出窗口,因为代码不会重新加载整个页面?请参阅下面的代码

母版页:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="OnlinePrizing.SiteMaster" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

<!DOCTYPE html >
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head runat="server">
    <title></title>
    <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />

           <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
<script type="text/javascript">
    function showPopup(who) {
        console.log("show called: " + who);
        var modalPopupBehavior = $find('programmaticModalPopupBehavior');
        modalPopupBehavior.show();
    }
    function hidepopup(who) {
        console.log("hide called: " + who);
        var modalPopupBehavior = $find('programmaticModalPopupBehavior');
        modalPopupBehavior.hide();
    }

    window.onbeforeunload = function () {
        showPopup('window.onbeforeunload');
    };

    window.onsubmit = function () {
        showPopup('window.onsubmit');
    };

    window.onload = function () {
        hidepopup('window.onload');
    };
    </script>
    <style type="text/css">
.modalBackground {
    background-color:Blue;
    filter:alpha(opacity=30);
    opacity:0.3;
}   
.modalPopup {
    background-color:white;
    border-width:3px;
    border-style:solid;
    border-color:Gray;
    padding:3px;
    width:250px;
}
</style>
    <asp:ContentPlaceHolder ID="HeadContent" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form runat="server">
    <asp:ToolkitScriptManager ID="ToolkitScriptManager1" EnablePartialRendering="true" runat="server"></asp:ToolkitScriptManager>
    <asp:Button runat="server" ID="hiddenTargetControlForModalPopup" style="display:none"/>
        <asp:ModalPopupExtender runat="server" ID="programmaticModalPopup"
            BehaviorID="programmaticModalPopupBehavior"
            TargetControlID="hiddenTargetControlForModalPopup"
            PopupControlID="programmaticPopup" 
            BackgroundCssClass="modalBackground"
            DropShadow="True"
            PopupDragHandleControlID="programmaticPopupDragHandle"
            RepositionMode="RepositionOnWindowScroll" >
        </asp:ModalPopupExtender>
              <asp:Panel runat="server" CssClass="modalPopup" ID="programmaticPopup" style="display:none;width:350px;padding:10px">
                 <asp:Panel runat="Server" ID="programmaticPopupDragHandle" Style="cursor: move;background-color:#DDDDDD;border:solid 1px Gray;color:Black;text-align:center;">
                      Processing... Please Wait...
                 </asp:Panel>
                     <br />
                     <div style="text-align:center;"><img src="images/loader.gif" /></div>
              </asp:Panel> 
    <div class="page">
        <div class="header">
            <div class="title">
                <h1>
                    <asp:Label ID="lblTitle" runat="server" Text="Home"></asp:Label><br />
                </h1>
            </div>
            <div class="loginDisplay">
                <asp:Label ID="LoginStatus" runat="server" Text="Not logged in."></asp:Label>
            </div>
            <div class="clear hideSkiplink">
                 <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" 
                    EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
                     <DynamicMenuItemStyle CssClass="dynamic" />
                    <Items>
                        <asp:MenuItem NavigateUrl="~/Home.aspx" Text="Home"></asp:MenuItem>
                        <asp:MenuItem NavigateUrl="~/PrizeListing.aspx" Text="Prize Listing">
                        </asp:MenuItem>
                        <asp:MenuItem Text="Administration" 
                            Value="Administration" Selectable="False">
                            <asp:MenuItem Text="Users" Value="Users" NavigateUrl="~/Admin.aspx?mode=users"></asp:MenuItem>
                            <asp:MenuItem Text="Prizes >" Value="Prizes" NavigateUrl="~/Admin.aspx?mode=prizes">
                            <asp:MenuItem Text="Prizes GL Codes"  Value="Prizes GL Codes" NavigateUrl="~/PrizesGLCodes.aspx">
                            </asp:MenuItem>
                            </asp:MenuItem>
                            <asp:MenuItem Text="Tournaments  >" Value="Tournaments" NavigateUrl="~/tournaments.aspx">
                                <asp:MenuItem Text="Tournament Templates"  Value="Tournament Templates" NavigateUrl="~/TournamentTemplates.aspx">
                            </asp:MenuItem>
                            </asp:MenuItem>
                           <asp:MenuItem Text="Winners >" Value="Winners" NavigateUrl="~/Admin.aspx?mode=winners">
                             <asp:MenuItem Text="Issue Bounty Prizes" NavigateUrl="~/IssueBountyPrizes.aspx"></asp:MenuItem>
                             <asp:MenuItem Text="Merged\Banned Players"  Value="Merged\Banned Players" NavigateUrl="~/BannedAndHiddenPlayers.aspx">
                            </asp:MenuItem>
                           </asp:MenuItem>
                            <asp:MenuItem Text="Inventory >" Value="Inventory" 
                                NavigateUrl="~/Inventory.aspx">
                            <asp:MenuItem Text="Reconciliation Notes" Value="Reconciliation Notes" 
                                NavigateUrl="~/ReconciliationNotes.aspx">
                            </asp:MenuItem>
                            </asp:MenuItem>
                            <asp:MenuItem NavigateUrl="~/ReceiveInventory.aspx" Text="Receive Inventory" 
                                Value="Receive Inventory"></asp:MenuItem>
                        </asp:MenuItem>
                        <asp:MenuItem Text="Reports" 
                            Value="Reports" Selectable="False">
                            <asp:MenuItem NavigateUrl="~/ReportsAllPrizes.aspx" Text="All Prizes" 
                                Value="All Prizes"></asp:MenuItem>
                            <asp:MenuItem NavigateUrl="~/ReportsPhysicalPrizes.aspx" 
                                Text="Physical Prize Audit" Value="Physical Prize Audit"></asp:MenuItem>
                            <asp:MenuItem NavigateUrl="~/ReportsReconciliation.aspx" Text="Reconciliation" 
                                Value="Reconciliation"></asp:MenuItem>
                                <asp:MenuItem NavigateUrl="~/ReportsExactTargetEmailHistory.aspx" Text="ExactTarget Email History" 
    Value="ExactTargetEmailHistory"></asp:MenuItem>
                        </asp:MenuItem>
                        <asp:MenuItem NavigateUrl="~/About.aspx" Text="About"/>
                    </Items>
                </asp:Menu>
            </div>
        </div>
        <div class="main">
            <asp:ContentPlaceHolder ID="MainContent" runat="server"/>
        </div>
        <div class="clear">
        </div>
    </div>
    <div class="footer">

    </div>
    </form>
</body>
</html>

功能显示弹出窗口(who){
console.log(“显示名:“+who”);
var modalPopupBehavior=$find('programmaticModalPopupBehavior');
modalPopupBehavior.show();
}
职能hidepopup(世卫组织){
log(“隐藏调用:+who”);
var modalPopupBehavior=$find('programmaticModalPopupBehavior');
modalPopupBehavior.hide();
}
window.onbeforeunload=函数(){
showPopup('window.onbeforeunload');
};
window.onsubmit=函数(){
showPopup('window.onsubmit');
};
window.onload=函数(){
hidepopup('window.onload');
};
莫达尔巴基德先生{
背景颜色:蓝色;
过滤器:α(不透明度=30);
不透明度:0.3;
}   
莫达尔波普先生{
背景色:白色;
边框宽度:3倍;
边框样式:实心;
边框颜色:灰色;
填充:3倍;
宽度:250px;
}
处理。。。请稍候。。。


您会注意到,搜索按钮会导致girdview.databind,这会导致页面调用window.load。但是,您会注意到“导出”按钮不会调用任何内容来重新加载页面,因此不会触发window.load事件,这是我隐藏弹出窗口的地方,因此它将永远保持不变

这是其中一页

导出按钮不会触发window.load,因此无法隐藏模式弹出窗口

您可以通过
BeginRequestHandler
EndRequestHandler
事件来处理此问题。我认为您需要下面这样的方法,并删除其他方法(
onload
onbeforeuload
)。页面请求开始时显示模式弹出窗口,页面请求结束时隐藏模式弹出窗口。对于类似的问题,请参考我的其他答案

<script type="text/javascript">
    function pageLoad(sender, args) {
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_beginRequest(BeginRequestHandler);
        prm.add_endRequest(EndRequestHandler);
    }

    function BeginRequestHandler(sender, args) {
        var modalPopupBehavior = $find('programmaticModalPopupBehavior');
        modalPopupBehavior.show();
    }

    function EndRequestHandler(sender, args) {
        var modalPopupBehavior = $find('programmaticModalPopupBehavior');
        modalPopupBehavior.hide();
    }
</script>

函数页面加载(发送方,参数){
var prm=Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
}
函数BeginRequestHandler(发送方,参数){
var modalPopupBehavior=$find('programmaticModalPopupBehavior');
modalPopupBehavior.show();
}
函数EndRequestHandler(发送方,参数){
var modalPopupBehavior=$find('programmaticModalPopupBehavior');
modalPopupBehavior.hide();
}

pageload正在被激发,但是,prm.add_beginRequest(BeginRequestHandler);prm.add_endRequest(EndRequestHandler);他们没有被解雇。知道怎么回事吗?页面上有没有触发回发的控件(可能是按钮)?尝试添加一个带有
onclick
事件的
asp:button
,该事件将引导您完成
BeginRequestHandler
EndRequestHandler
事件。理想情况下,我希望pop在page init(即最早可以显示的位置)显示,并在页面加载完成后立即隐藏。另外,如果弹出窗口不受回发的影响,并且在页面加载完成之前一直存在,那就太好了。EndRequestHandler被调用得太快了。当有一个windows.onload被调用时,我该如何使它如此呢?