H
hal
I have an application that includes an activex component
that consumes resources that must be released when the a
page is unloaded.
Toward this end I subscribe to the unload event of the
body of my page in javascript.
However, if I turn on smart navigation, any button that
does a server.transfer fails to fire the javascript unload
event.
I have included two example pages that duplicate the
behavior. To run the example, create two pages called
webform1.aspx and webform2.aspx and copy the html and code
from this message.
Any explanation or work around is greatly appreciated!
Thanks for your time
Hal
**********************
Webform1.aspx:
**********************
<%@ Page language="c#" Inherits="System.Web.UI.Page"
smartNavigation="True"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN" >
<HTML>
<HEAD>
<meta name="GENERATOR" Content="Microsoft
Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript"
content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post"
runat="server">
<script language="javascript">
function __OnLoad()
{
alert("Form1
Load");
}
function __OnUnLoad()
{
alert("Form1
UnLoad");
}
</script>
<script language="C#"
runat="server">
void btnTransferForm2_Click
(object sender, System.EventArgs e)
{
this.Server.Transfer("Webform2.aspx");
}
void btnRedirForm2_Click
(object sender, System.EventArgs e)
{
this.Response.Redirect("Webform2.aspx");
}
</script>
<P>Form1.aspx SmartNav=True
</P>
<P><a
href="WebForm2.aspx">Naviagate to
Webform2.aspx</a> this will also fire
the unload event</P>
<P>
<asp:Button
id="btnTransferForm2" runat="server"
OnClick="btnTransferForm2_Click" Text="Transfer To
Form2"></asp:Button> click
this button to transfer to
page 2 and see that the unload jscript routine does
not fire</P>
<P>
<asp:Button
id="btnRedirForm2" runat="server"
OnClick="btnRedirForm2_Click" Text="Redirect To
Form2"></asp:Button> this
will fire the unload event
</P>
<script language="javascript">
<!--
window.attachEvent
("onload", __OnLoad);
//document.body.onload = __OnLoad;
window.attachEvent
("onunload", __OnUnLoad);
//document.body.onunload = __OnUnLoad;
-->
</script>
</form>
</body>
</HTML>
*******************
Webform2.aspx
*******************
<%@ Page language="c#" Inherits="System.Web.UI.Page" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm2</title>
<meta name="GENERATOR" Content="Microsoft
Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript"
content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post"
runat="server">
<script language="javascript">
function __OnLoad()
{
alert("Form2
Load");
}
function __OnUnLoad()
{
alert("Form2
UnLoad");
}
</script>
<script language="C#"
runat="server">
void btnTransferForm1_Click
(object sender, System.EventArgs e)
{
this.Server.Transfer("WebForm1.aspx");
}
void btnRedirForm1_Click
(object sender, System.EventArgs e)
{
this.Response.Redirect("Webform1.aspx");
}
</script>
<P>Form2.aspx SmartNav=False</P>
<P><a
href="WebForm1.aspx">Naviagate to Webform1.aspx</a></P>
<P>
<asp:Button
id="btnTransferForm1" runat="server"
OnClick="btnTransferForm1_Click" Text="Transfer To
Form1"></asp:Button></P>
<P>
<asp:Button
id="btnRedirForm1" runat="server"
OnClick="btnRedirForm1_Click" Text="Redirect To
Form1"></asp:Button></P>
<script language="javascript">
<!--
window.attachEvent
("onload", __OnLoad);
//document.body.onload = __OnLoad;
window.attachEvent
("onunload", __OnUnLoad);
//document.body.onunload = __OnUnLoad;
-->
</script>
</form>
</body>
</HTML>
that consumes resources that must be released when the a
page is unloaded.
Toward this end I subscribe to the unload event of the
body of my page in javascript.
However, if I turn on smart navigation, any button that
does a server.transfer fails to fire the javascript unload
event.
I have included two example pages that duplicate the
behavior. To run the example, create two pages called
webform1.aspx and webform2.aspx and copy the html and code
from this message.
Any explanation or work around is greatly appreciated!
Thanks for your time
Hal
**********************
Webform1.aspx:
**********************
<%@ Page language="c#" Inherits="System.Web.UI.Page"
smartNavigation="True"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN" >
<HTML>
<HEAD>
<meta name="GENERATOR" Content="Microsoft
Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript"
content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post"
runat="server">
<script language="javascript">
function __OnLoad()
{
alert("Form1
Load");
}
function __OnUnLoad()
{
alert("Form1
UnLoad");
}
</script>
<script language="C#"
runat="server">
void btnTransferForm2_Click
(object sender, System.EventArgs e)
{
this.Server.Transfer("Webform2.aspx");
}
void btnRedirForm2_Click
(object sender, System.EventArgs e)
{
this.Response.Redirect("Webform2.aspx");
}
</script>
<P>Form1.aspx SmartNav=True
</P>
<P><a
href="WebForm2.aspx">Naviagate to
Webform2.aspx</a> this will also fire
the unload event</P>
<P>
<asp:Button
id="btnTransferForm2" runat="server"
OnClick="btnTransferForm2_Click" Text="Transfer To
Form2"></asp:Button> click
this button to transfer to
page 2 and see that the unload jscript routine does
not fire</P>
<P>
<asp:Button
id="btnRedirForm2" runat="server"
OnClick="btnRedirForm2_Click" Text="Redirect To
Form2"></asp:Button> this
will fire the unload event
</P>
<script language="javascript">
<!--
window.attachEvent
("onload", __OnLoad);
//document.body.onload = __OnLoad;
window.attachEvent
("onunload", __OnUnLoad);
//document.body.onunload = __OnUnLoad;
-->
</script>
</form>
</body>
</HTML>
*******************
Webform2.aspx
*******************
<%@ Page language="c#" Inherits="System.Web.UI.Page" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm2</title>
<meta name="GENERATOR" Content="Microsoft
Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript"
content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post"
runat="server">
<script language="javascript">
function __OnLoad()
{
alert("Form2
Load");
}
function __OnUnLoad()
{
alert("Form2
UnLoad");
}
</script>
<script language="C#"
runat="server">
void btnTransferForm1_Click
(object sender, System.EventArgs e)
{
this.Server.Transfer("WebForm1.aspx");
}
void btnRedirForm1_Click
(object sender, System.EventArgs e)
{
this.Response.Redirect("Webform1.aspx");
}
</script>
<P>Form2.aspx SmartNav=False</P>
<P><a
href="WebForm1.aspx">Naviagate to Webform1.aspx</a></P>
<P>
<asp:Button
id="btnTransferForm1" runat="server"
OnClick="btnTransferForm1_Click" Text="Transfer To
Form1"></asp:Button></P>
<P>
<asp:Button
id="btnRedirForm1" runat="server"
OnClick="btnRedirForm1_Click" Text="Redirect To
Form1"></asp:Button></P>
<script language="javascript">
<!--
window.attachEvent
("onload", __OnLoad);
//document.body.onload = __OnLoad;
window.attachEvent
("onunload", __OnUnLoad);
//document.body.onunload = __OnUnLoad;
-->
</script>
</form>
</body>
</HTML>