none
如何彻底删除一个DIV或者IFRAME对象?!removeChild不管用! RRS feed

  • 问题

  • 一个页面有N个DIV,每个DIV里面都有一个iframe,打开其他一些页面的。

    当我用js的removeChild删除某个DIV之后,我发现其实这个DIV并没有删除掉,因为这个DIV里面的iframe里面的页面还在运行着。这真是奇了怪了!

    我i删除了DIV之后,DIV连同他里面的东西怎么都还在呢?这正常吗?

    如果我要彻底删除这个DIV,将其从内存中永远删除,难道就没有办法了吗?


    da jia hao!

    2012年6月19日 6:49

全部回复

  • 1.怎么确定iframe里的页面还在运行

    2.如果用innerHTML=“”行不行

    3.什么浏览器下的问题


    2012年6月19日 10:45
  • 1、IE9

    2、iframe里面的页面,有setInterval定时运行的代码。

    删除div之后,这部分代码仍然在运行。。。。所以我才知道原来div里面的东西根本就没有删除掉,都还在。


    da jia hao!

    2012年6月20日 3:33
  • 试了一下,确实有问题,但是setInterval不会一直运行下去,可能是removeChild的执行比较慢,可以用innerHTML=‘’ 代替

    主页面

     

    <HTML>
    <HEAD></HEAD>
    <BODY>
    <script type='text/javascript'>
    function ondel()
    {
       var oCon =  document.getElementById('con');
       //oCon.removeChild(document.getElementById('if'));
       oCon.innerHTML='';
    }

    </script>
    <div id='con'>
    <iframe id="if" src='loop.htm' ></iframe>
    </div>
    <br/>
    <div>

    <input type='button' value='delete' onclick='ondel()' />
    </div>

    </BODY>
    </HTML>

    子页面 loop.htm

    <html>

    <head></head>
    <body>
    <div id='clock'></div>
    <script type='text/javascript'>
    var int=setInterval("clock()",2000)
    function clock()
      {
      var t=new Date();
     alert(t);
      document.getElementById("clock").innerHTML=t;
      }
    </script>

    <body/>
    </html>

    2012年6月27日 6:17
  • 我现在面临一个两难的局面:

    1、removeChild之后,通过将div设置为null,其实是可以将对象彻底消除的;

    2、但是如果div里面的iframe里面的页面有setTimeout、setInterval运行的js代码,那么在彻底消除了DIV对象之后,这些代码会报错,因为此时iframe对象已经被消除掉了。

    所以,如果不讲DIV设置为null,那么就会有内存占用问题。

    但是,如果删除了,又会导致js代码出错,真是烦恼啊。为什么删除一个对象之后,不能像直接关掉IE窗口那样一了百了呢?


    da jia hao!

    2012年7月2日 3:42
  • 运行我贴的代码会报错吗?我试的时候没有报过js错
    2012年7月9日 5:28
  • 重现问题步骤:

    1、做一个页面(A),在onload里面用ajax请求一个资源,最好是需要花费几秒时间的。ajax返回之后在回调函数里面alert一下结果。

    2、将这个页面以iframe的形式放在另外一个页面里面(B),在B页面里面写一个按钮,代码就是将iframe删除掉。

    3、打开B页面,此时自动加载A,同时A里面的ajax代码也开始运行,此时马上点B页面的里面删除按钮,将iframe删除掉。

    4、你会发现一会儿之后A页面的回调函数运行了,并且会报错。

    跪求解决方法!谢谢!


    da jia hao!

    2013年3月6日 3:47