【问题标题】:JS doesn't run with an asp.net update panelJS 不使用 asp.net 更新面板运行
【发布时间】:2013-05-24 20:25:25
【问题描述】:

以下代码在没有更新面板的情况下工作,但在有更新面板时不会运行。其目的是清除来自向后或向前浏览器按下的页面条目上的 bfcache。任何人都知道当用户点击后退/前进并且页面有更新面板时如何让 js 运行?

window.onpageshow = function (event) { if (event.persisted) { 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>

【问题讨论】:

    标签: javascript asp.net updatepanel


    【解决方案1】:

    您的错误是您已将字符串作为必须运行的代码部分。从此行中删除 "

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

    另外,您可以从更新面板中删除 stript 的那部分并将其放在前面。

    【讨论】:

    • 我试过了,把它放在更新面板之外。请参阅我更新的帖子中的尝试 #2。它仍然不起作用。如果有帮助的话,这在 Safari 中。
    • @user1777317 您还需要包含其余代码。 Sys.Application.add_load(js) 和其他人。
    • @user1777317 关于程序逻辑的部分我无法帮助您,我只能帮助您解决我认为的错误。
    猜你喜欢
    • 2014-06-27
    • 2014-05-23
    • 2012-02-20
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多