Почему Iframe не загружается во второй раз? - PullRequest
0 голосов
/ 23 ноября 2011

Я пытаюсь загрузить веб-сайт, используя fancybox Iframe одним нажатием кнопки, и он работает довольно хорошо в первый раз, а при попытке загрузки во второй раз он не работает.

И если я попытаюсь удалить кнопку, а также ahref из шаблона содержимого и поместить его снаружи, то Iit покажет мне пустой Iframe, а остальная часть кода работает нормально.Вот мой код:

   <script type="text/javascript">
    $(document).ready(function () {

        $("#various3").fancybox({
            'width': '75%',
            'height': '75%',
            'autoScale': false,
            'transitionIn': 'none',
            'transitionOut': 'none',
            'type': 'iframe'
        });

        $('#<%=txtWebsiteAddress.ClientID%>').change(function () {
            $('#various3').attr('href', $(this).val());
        });


        $("#<%=btnShowThumbnailImage.ClientID %>").click(function () {

            $("#various3").trigger('click');

        });
    });
</script>

Это моя разметка:

    Width:<asp:TextBox ID="txtWidth" runat="server">320</asp:TextBox>
    Height:<asp:TextBox ID="txtHeight" runat="server">240</asp:TextBox>


    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
    <li><a id="various3" href=""></a></li>
    <asp:Button ID="btnShowThumbnailImage" runat="server" Text="Button" OnClick="btnShowThumbnailImage_Click" />
    <asp:Image ID="imgWebsiteThumbnailImage" runat="server" Visible="false" />
    <asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="0">
    <ProgressTemplate>
    <img src="images/Loader.gif" alt="loading" />
    </ProgressTemplate>
    </asp:UpdateProgress>
    </ContentTemplate>
    </asp:UpdatePanel>

1 Ответ

1 голос
/ 23 ноября 2011

после обновления вашей UpdatePanel, вам нужно повторно инициализировать ваш javascript, потому что после запуска UpdatePanel, Dom изменится.Это может быть сделано двумя функциями, которые включены в UpdatePanel.Используя эти 2 вызова, вы повторно инициализируете свои вызовы FuncyBox при загрузке страницы, а затем снова на каждом UpdatePanel.

<script type="text/javascript">

    var prm = Sys.WebForms.PageRequestManager.getInstance();    
    prm.add_initializeRequest(InitializeRequest);
    prm.add_endRequest(EndRequest);

    function InitializeRequest(sender, args) {      
    }

    function EndRequest(sender, args) {
        InitMyFancyBox();
    }

    $(document).ready(function () {
        InitMyFancyBox();
    });


    function InitMyFancyBox()
    {
        $("#various3").fancybox({
            'width': '75%',
            'height': '75%',
            'autoScale': false,
            'transitionIn': 'none',
            'transitionOut': 'none',
            'type': 'iframe'
        });

        $('#<%=txtWebsiteAddress.ClientID%>').change(function () {
            $('#various3').attr('href', $(this).val());
        });


        $("#<%=btnShowThumbnailImage.ClientID %>").click(function () {
            $("#various3").trigger('click');
        });
    }    
</script>
...