当我把index.html的宽度拖小,小于sub里面table的宽度800px的时候
是指拖窗口吗
我复制lz的代码在ie6运行
只弹出2次而已啊

解决方案 »

  1.   

    pTar.width = pTar.Document.body.scrollWidth + 10 ;
    把末尾的+10  改成+50 看看。
      

  2.   

    我做了一个页面:其中的 <iframe>大小随着所在index.html页面大小自动变化;
    同时 <iframe>内的sub.html的大小随iframe的大小自动变化。 你想要什么功能啊?<table border="3" width="800px" style="text-align: center">
    这里width=100%就行了啊
      

  3.   


    如果吧所有 alert() 都注销, 
    然后把pTar.Document.body.scrollWidth + 50 后面的“+ 50 ” 去掉。
    可能会看到的结果和IE7一样,我估计是因为sub.html太小了,我本地测试用内容多的页面,就是去掉“+50”,也是死循环。
      

  4.   

    这个我知道,有的多数页面都可以设置百分比,但是我们项目客户变态,表格宽度约2500px,N多列显示在一个表格里,如果用百分比的话,每列的列高是原来的十几倍。看东西全乱套了。
      

  5.   

    <!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>
    <title>主页</title>         
    <script type="text/javascript">
    //拖动窗体触发事件
    var  resizeTimer = null;
    //window.onresize = function()
    //{
    //   if(resizeTimer==null)
    //   {
    //        resizeTimer = setTimeout("doResize()",300);  //控制调用方法的时间间隔
    //   }
    //}document.getElementById("aa").onresize = function()
    {
       if(resizeTimer==null)
       {
            resizeTimer = setTimeout("doResize()",1000);  //控制调用方法的时间间隔
       }
    }
    function doResize()
    {
        findDimensions('iframe',true);
        resizeTimer=null;
    }
    //实时获取浏览器宽度和高度;
    var winWidth = 0;
    function findDimensions(iframeName,resize) //函数:获取尺寸
    {
        //获取窗口宽度
        if (window.innerWidth)  { winWidth = window.innerWidth; }
        else if ((document.body) && (document.body.clientWidth))  { winWidth = document.body.clientWidth; }
        //通过深入Document内部对body进行检测,获取窗口大小
        if (document.documentElement  && document.documentElement.clientWidth) 
         { winWidth = document.documentElement.clientWidth; }
        //拖动浏览器的时候,调用的调整iframe方法,参数(iframe ID ,浏览器宽度)
        alert('onresize方法被调用 ');//
        dyniframesize(iframeName,winWidth);
    }   //此段代码用于动态设置ifream宽度    
    var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]
    var FFextraWeight=getFFVersion>=0.1? 16 : 0 
    function dyniframesize(iframeName,winWidth) 
    {
        var pTar = null;
        if (document.getElementById) {  pTar = document.getElementById(iframeName); }
        else    {   eval('pTar = ' + iframeName + ';'); }
        if (pTar && !window.opera)
        {
            pTar.style.display="block";
            if (pTar.Document && pTar.Document.body.offsetWidth)
            {
                //这段代码动态设置iframe宽度
                if(winWidth < pTar.Document.body.scrollWidth)
                {
                    pTar.width = pTar.Document.body.scrollWidth + 50 ;
                }
                else
                {
                    pTar.width='100%';
                } 
    //                alert(pTar.Document.body.scrollWidth);    //★如果注销此行,在ie6中将无限调用onresize方法。
            }
        }
    }
    </script>
    </head>
    <div id="aa" style="width:100%; height:1px;"></div>
        <body>
            <!-- 如果去掉DIV标记,onresize方法也会执行,宽度重复+ 50px,但是只提示信息只显示1次或者2次。
                 注:内容需要DIV不能去掉  -->
            <div>            
                <iframe id="iframe" frameborder="1"  scrolling="no" width="100%" height="100%" src="sub.html"
                onload="findDimensions('iframe')" ></iframe>
            </div>
        </body>
    </html>
      

  6.   

    因为window.onresize本来是window的resize
    但ie6(ie7不知有没有问题)在body的resize时也执行一遍(即body宽度修改时也执行一遍)
    所以虽然你没有修改(拖动)窗口的大小但修改了body的大小所以执行了一遍onresize
    而你在onresize里面又修改body的大小所以进入死循环了
      

  7.   

    先谢谢 cloudgamer ;
    不过,
    虽然没有死循环了,可是当IE浏览器小于800px刷新后,托大index,iframe还是靠左,没有随index变大。
        当IE浏览器大于800px刷新后,托小index,iframe的内容被覆盖;还是不行
      

  8.   

    刚才只想着原因没注意
    var t=document.documentElement.clientWidth;
    window.onresize = function()
    {
    if(t!=document.documentElement.clientWidth){
    t=document.documentElement.clientWidth;
       if(resizeTimer==null)
       {
            resizeTimer = setTimeout("doResize()",1000);  //控制调用方法的时间间隔
       }
    }
    }
    改这样试试
      

  9.   

    cloudgamer 还在吗?
    请到http://topic.csdn.net/u/20081226/14/caf2776a-46cd-4c2f-a144-4fc4b6f0fac5.html 
    接分。