AjaxControlTookit中的Ajax以及JQuery中的Ajax与iframe的兼容性问题

102 views 0 comments posted at about 9 years ago Raymond Tang

在IE中,标题中提到的Ajax 的运用中如果有frame元素那么则会出错

比如:

<ajaxToolkit:ModalPopupExtender ID="ModalPopupShowDealDetail" runat="server"
         TargetControlID="HiddenShowDealDetail" DropShadow="true" PopupControlID="PanelShowDealDetail"
         BackgroundCssClass="modalBackground" Y="20" CancelControlID="ImageButtonClose" PopupDragHandleControlID="PanelTitle">
      </ajaxToolkit:ModalPopupExtender>
      <input id="HiddenShowDealDetail" type="hidden" runat="server" />
      <asp:Panel ID="PanelShowDealDetail" Style="display: none" CssClass="modalPopup"
         runat="server" Height="550px" Width="700px">
         <asp:Panel ID="PanelTitle" runat="server" CssClass="popupTitlePanle">
           <span style="float:right">
              <asp:ImageButton ID="ImageButtonClose" Width="20px" ImageUrl="~/Images/BillDealFlow/error.gif" runat="server" ToolTip="关闭" /></span><span id="popupTitle"></span>
         </asp:Panel>
         <div id="iframeContainer">
         </div>
      </asp:Panel>

如果我在红色的div内部加入一个iframe元素

<div id="iframeContainer"><iframe />
   </div>

那么整个Ajax的加载就会出错

解决的访问是等页面加载完通过Javascript为div创建iframe元素就不会出错了

function openPopup(popupId,url,title,titleId,iwidth,iheight,containerId)
      {
      var p=$find(popupId);
      var d=$get(containerId);
      var t=$get(titleId);
      if(t!=null)
      {
      t.innerText=title;
      }
      var iframes=d.getElementsByTagName('iframe');
      if(iframes!=null)
      {
      for(var i=0; i<iframes.length;i++)
      {
      d.removeChild(iframes[i]);
      }
      }
      var iframe=document.createElement('iframe');
      iframe.src=url;
      d.appendChild(iframe);
     
      if(p!=null)
      {
      if(iframe!=null)
      {
      iframe.src=url;
      iframe.border=0;
      iframe.frameBorder=0;
      iframe.scrolling="no";
      iframe.marginwidth=0;
      iframe.style.width=iwidth;
      iframe.style.height=iheight+'px';
      p.show();
      return true;
      }
      }
      return false;
      }
      </script>

类似的问题还会出现在xslt中


Add comment

Comments (0)

No comments yet.
In this Page