Javascript 动态iFrame高度不适用于Ajax!

Javascript 动态iFrame高度不适用于Ajax!,javascript,asp.net,ajax,telerik,Javascript,Asp.net,Ajax,Telerik,我正在用ASP.NET3.5和C#和TelerikAjax控件开发一个web应用程序。我的主页上有一个iFrame。应用程序动态加载iFrame中的其他页面,iFrame高度在页面加载时动态调整。我在页面中使用RadScriptManager、RadAjaxPannel、RadAjaxLoadingPannel。问题是当ajax“回调”页面时,iFrame高度不能动态调整 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="

我正在用ASP.NET3.5和C#和TelerikAjax控件开发一个web应用程序。我的主页上有一个iFrame。应用程序动态加载iFrame中的其他页面,iFrame高度在页面加载时动态调整。我在页面中使用RadScriptManager、RadAjaxPannel、RadAjaxLoadingPannel。问题是当ajax“回调”页面时,iFrame高度不能动态调整

<%@ Page Language="C#" AutoEventWireup="true"  CodeBehind="MastetPage.master.cs" Inherits="MastetPage" %>

<!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 id="Head" runat="server">
    <title></title>

   <script type="text/javascript" language="JavaScript">


       function setSize(elem) {
           var the_height;

           the_height = elem.contentWindow.document.body.scrollHeight;
           elem.height = the_height; // Its works fine in IE, Chrome, Safari but not work in FF and opera


       }



</script>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>

</head>
<body  id="Page_Master"  runat="server"  >

    <form id="formMasterPage" method="post" runat="server">

    <telerik:RadScriptManager ID="RadScriptManager1" runat="server"  AsyncPostBackTimeout="500">
    </telerik:RadScriptManager>

<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" Height="100%" Width="100%"   >


    <div id="MainPage">

        <div class="Header">

        </div>

        <div id="ContentHolder">
            <div id="Content">
                <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                </asp:ContentPlaceHolder>

                <iframe id="IFrameMaster" name="IFrameMaster"  scrolling="auto" width="998px"  style=" min-height:500px;"  allowtransparency="true"   frameborder="0" runat="server" >
                </iframe> 



            </div>
        </div>
        <div id="Footer">

        </div>
    </div>
     </telerik:RadAjaxPanel>


    </form>

</body>
</html>
这个问题的解决方案是什么

谢谢
Md Nasir Uddin

编辑:更正示例

<html>
<head runat="server">
    <title></title>
    <script type="text/javascript" language="JavaScript">
        function setSize() {
            document.getElementById('<%= IFrameMaster.ClientID %>').height = document.body.scrollHeight - 30;
        }
    </script>
</head>
<body onload="setSize(); Sys.UI.DomEvent.addHandler(window, 'resize', setSize);">
    <form id="form1" runat="server">
    <asp:ScriptManager runat="server" />
    <iframe src="about:blank" runat="server" id="IFrameMaster"></iframe>
    </form>
</body>
</html>

函数setSize(){
document.getElementById(“”).height=document.body.scrollHeight-30;
}
只有两件事:

  • 要能够调用
    Sys.UI.doEvent.addHandler
    (或
    $addHandler
    ),您需要一个ScriptManager
  • -30
    用于防止页面收缩时出现故障。利用你的利润,找到一个合适的价值

使用ASP.NET AJAX,异步请求后不会调用文档的onload事件。相反,使用ScriptManager和js代码来设置应该执行的iframe的高度

<html>
<head runat="server">
    <title></title>
    <script type="text/javascript" language="JavaScript">
        function setSize() {
            document.getElementById('<%= IFrameMaster.ClientID %>').height = document.body.scrollHeight - 30;
        }
    </script>
</head>
<body onload="setSize(); Sys.UI.DomEvent.addHandler(window, 'resize', setSize);">
    <form id="form1" runat="server">
    <asp:ScriptManager runat="server" />
    <iframe src="about:blank" runat="server" id="IFrameMaster"></iframe>
    </form>
</body>
</html>