ModalPopupExtender IFrame пуст в FireFox - PullRequest
       17

ModalPopupExtender IFrame пуст в FireFox

0 голосов
/ 10 февраля 2012

Я реализовал модальное всплывающее окно, используя IFrame.Я использую некоторый JavaScript, чтобы скрыть основное содержимое (Popup2_Panel1) и отображать сообщение о загрузке (Popup2_Panel2) во время загрузки IFrame.Когда загрузка IFrame завершена (событие загрузки iframe), я скрываю сообщение о загрузке и показываю основное содержимое (с помощью IFrame).Это работает в IE / Safari / Chrome / Opera, но в FF содержимое IFrame остается пустым после того, как основное содержимое становится видимым.

Как я могу заставить эту работу работать в FireFox?Если я пропущу код скрытия / показа, тогда IFrame будет виден в FireFox, но я не хочу показывать содержимое до того, как iframe загрузит новый контент, в противном случае мы на мгновение увидим старый контент.Вот мой код:

<script type="text/javascript">

    function ShowPopup(srcUrl, titleCaption, width, height) {
        var frame = document.getElementById("Popup2_Frame");

        // This code causes the IFrame to be blank in FireFox
        document.getElementById("Popup2_Panel1").style.display = "none";
        document.getElementById("Popup2_Panel2").style.display = "";

        frame.width = width + "px";
        frame.height = height + "px";
        var title = document.getElementById('Popup2_Caption');
        if (title) {
            title.innerHTML = titleCaption;
        }
        frame.src = srcUrl;
        var mpe = $find('Popup2_MPE');
        if (mpe) {
            mpe.show();
        }
    }

    function PopupLoaded(frame) {

        // This code causes the IFrame to be blank in FireFox
        document.getElementById("Popup2_Panel1").style.display = "";
        document.getElementById("Popup2_Panel2").style.display = "none";

        var mpe = $find('Popup2_MPE');
        if (mpe) {
            mpe._layout();
        }
    }

</script>

<asp:ModalPopupExtender ID="ModalPopupExtender2" runat="server" TargetControlID="ImgButton13" PopupControlID="Popup2_Window" BackgroundCssClass="popupModalBackground" OkControlID="Popup2_OK" CancelControlID="Popup2_Cancel" Drag="True" PopupDragHandleControlID="Popup2_Titlebar" BehaviorID="Popup2_MPE">
</asp:ModalPopupExtender>

<div id="Popup2_Window" class="popupWindow" style="display: none;">
    <div id="Popup2_Panel1">
        <div id="Popup2_Titlebar" class="popupTitlebar">
            <span id="Popup2_Caption">Caption</span>
            <img id="Popup2_ImgClose" runat="server" style="float: right; cursor: pointer;" src="~/Masters/_default/img/delete.png" alt="Close" onclick="javascript:document.getElementById('MainContent_Popup2_Cancel').click()" />
        </div>
        <div class="popupContent">
            <iframe id="Popup2_Frame" class="popupFrame" frameborder="0" onload="PopupLoaded(this)"></iframe>
        </div>
        <div class="tasks">
            <Exhibitor:ImgButton ID="Popup2_OK" runat="server" CssClass="icon" Text="OK" ImgSrc="~/Masters/_default/img/action-yes.png" />
            &nbsp;
            <Exhibitor:ImgButton ID="Popup2_Cancel" runat="server" CssClass="icon" Text="Cancel" ImgSrc="~/Masters/_default/img/action-no.png" />
        </div>
    </div>
    <div id="Popup2_Panel2" class="popupLoading">
        <center>
            Loading...<br />
            <br />
            <asp:Image ID="Popup2_ImgLoading" runat="server" ImageUrl="~/Masters/_default/img/loading.gif" />
        </center>
    </div>
</div>

1 Ответ

0 голосов
/ 13 февраля 2012

Решение состоит в том, чтобы использовать:

frame.style.visibility = "hidden";
...
frame.style.visibility = "visible";

вместо

frame.style.display = "none";
...
frame.style.display = "";

Похоже, FireFox вообще не будет отображать содержимое IFRAME после установки display = "none" и затем попыткиустановить display = "", даже если он загружает URL в фоновом режиме.Если мы установили видимость скрытый, элемент скрыт, но все равно занимает место, поэтому нам нужно выполнить дополнительное жонглирование, чтобы при загрузке он получил нулевой размер.

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