user1777317
user1777317

Reputation: 53

JS doesn't run with an asp.net update panel

The following code works without an update panel, but doesn't run when there is an update panel. Its purpose is to clear bfcache on page entry from a back or forward browser press. Anyone know how to get the js to run when the user hits back/foward and the page has an update panel?

window.onpageshow = function (event) { if (event.persisted) { window.location.reload() } };

Full page with update panel:

<body>
<form id="form1" runat="server">
    <ajaxToolkit:ToolkitScriptManager runat="server" ID="ToolkitScriptManager" />
     <asp:UpdatePanel ID="updatePanel1" UpdateMode="Conditional" runat="server">
        <ContentTemplate>
            <script type="text/javascript">
                var js = "window.onpageshow = function (event) { if (event.persisted) { window.location.reload() } };";

                Sys.Application.add_load(js);

                var prm = Sys.WebForms.PageRequestManager.getInstance();

                prm.add_endRequest(js);
                prm.add_beginRequest(js);
            </script>

            <a href='Default.aspx'>Default</a>
            <a href='Default2.aspx'>Default2</a>
            <a href='Default3.aspx'>Default3</a>
            <a href='Default4.aspx'>Default4</a>
            <br />
            <div>
                <asp:TextBox ID="tbText" runat="server"></asp:TextBox>
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>
</form>

Attempt #2

<body>
<script type="text/javascript">
    window.onpageshow = function (event) { if (event.persisted) { window.location.reload() } };
    </script>
<form id="form1" runat="server">
    <ajaxToolkit:ToolkitScriptManager runat="server" ID="ToolkitScriptManager" />
     <asp:UpdatePanel ID="updatePanel1" UpdateMode="Conditional" runat="server">
        <ContentTemplate>
            <a href='Default.aspx'>Default</a>
            <a href='Default2.aspx'>Default2</a>
            <a href='Default3.aspx'>Default3</a>
            <a href='Default4.aspx'>Default4</a>
            <br />
            <div>
                <asp:TextBox ID="tbText" runat="server"></asp:TextBox>
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>
</form>

Attempt #3

<body>
<form id="form1" runat="server">
    <ajaxToolkit:ToolkitScriptManager runat="server" ID="ToolkitScriptManager" />
     <asp:UpdatePanel ID="updatePanel1" UpdateMode="Conditional" runat="server">
        <ContentTemplate>
            <script type="text/javascript">
                var js = window.onpageshow = function (event) { if (event.persisted) { window.location.reload() } };;

                Sys.Application.add_load(js);

                var prm = Sys.WebForms.PageRequestManager.getInstance();

                prm.add_endRequest(js);
                prm.add_beginRequest(js);
            </script>

            <a href='Default.aspx'>Default</a>
            <a href='Default2.aspx'>Default2</a>
            <a href='Default3.aspx'>Default3</a>
            <a href='Default4.aspx'>Default4</a>
            <br />
            <div>
                <asp:TextBox ID="tbText" runat="server"></asp:TextBox>
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>
</form>

Upvotes: 1

Views: 647

Answers (1)

Aristos
Aristos

Reputation: 66641

Your error is that you have make string the part of the code that must be run. Remove the " from this line:

var js = 
 window.onpageshow = 
    function (event) { if (event.persisted) { window.location.reload() } };

And one more, you can remove that part of stript from inside the update panel and place it just before.

Upvotes: 1

Related Questions