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