Утечка памяти с jQuery UI внутри UpdatePanel в ie7 - PullRequest
0 голосов
/ 06 февраля 2010

У меня довольно сложная страница asp.net на основе UpdatePanels и jQuery UI. К сожалению, при обновлении панелей виджеты jQuery UI теряют память, как сумасшедшие в ie7, даже если я их «уничтожаю» вручную. Кто-нибудь знает технику / патч для предотвращения этих утечек? Я создал простой пример страницы со слайдером внутри UpdatePanel. Просто нажмите кнопку «Утечка» и обновите страницу, чтобы увидеть утечку в сите.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Leak2.aspx.cs" Inherits="Leak2" %>
<%@ Register Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="asp" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Leak</title>
    <link type="text/css" href="/jquery/css/custom-theme/jquery-ui-1.7.2.custom.css" rel="Stylesheet" />   
    <script type="text/javascript" src="/jquery/js/jquery-1.3.2.min.js"></script>
    <script type="text/javascript" src="/jquery/js/jquery-ui-1.7.2.custom.min.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <script type="text/javascript">
            function initializeSlider() {
                $(".slider").slider({
                    min: 0,
                    max: 100,
                    value: 100,
                    step: 5
                });
            }
            $(document).ready(function() {
                initializeSlider();
                Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function() {
                    initializeSlider();
                });
            });
        </script>
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <div style="width: 300px;">
                    <div class="slider"></div>
                    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Leak" />
                </div>
            </ContentTemplate>
        </asp:UpdatePanel>

    </div>
    </form>
</body>
</html>

1 Ответ

0 голосов
/ 08 февраля 2010

После некоторого дополнительного исследования, похоже, что правильный способ сделать это - использовать $ .ajax для отправки / получения только тех данных, которые мне нужны для построения страницы и выполнения всего взаимодействия страниц на стороне клиента. Однако это потребует довольно значительных изменений на странице. Кто-нибудь знает о патче для jquery-ui или общем методе восстановления памяти, просочившейся этими виджетами, которую я могу использовать тем временем?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...