JS不能与asp.net更新面板一起运行

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

本文关键字:一起 运行 更新 net 不能 asp JS      更新时间:2023-09-26

下面的代码可以在没有更新面板的情况下工作,但是当有更新面板时不能运行。它的目的是清除浏览器向后或向前按下的页面条目上的bfcache。有人知道如何让js运行时,用户点击后退/前进和页面有一个更新面板?

窗口。Onpageshow = function (event) {if (event.persist) {window.location.reload()}};

整页带有更新面板:

<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>

尝试# 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>

尝试# 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>

你的错误是你把字符串作为必须运行的代码的一部分。从这一行删除":

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

还有,你可以从更新面板中删除stript的一部分,并把它放在。