zoukankan      html  css  js  c++  java
  • 在ie6下remove包含iframe的table所在的容器,会导致页面控件的焦点诡异丢失。

      标题MS有点绕,就是说,我先在页面中放一个<input type="text"/>;,再动态添加一个div。在div中,我添加一个table子节点,再在table里添加一个iframe子节点。这时如果把焦点移到table里的任何子节点上,再把div给remove掉,就会导致input的焦点丢失,而且鼠标点击也无效。。。以下代码可以看到效果:

    <!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>iframe removed</title>
        
    </head>
        
    <body>
            
    <input type="text" value="test text"/>
            
    <input id="btnAdd" type="button" value="add"/>
            
    <input id="btnRm" type="button" value="remove"/>
        
    </body>
        
    <script type="text/javascript">
           
            
    function $I(id){
                
    return document.getElementById(id);
            }

            
            
    var d=document.createElement("div");
            d.innerHTML
    ='<table>'+
                                
    '<tr>'+
                                    
    '<td>'+
                                        
    '<iframe style="200px;height:200px;" id="ifm1" src="http://www.baidu.com"></iframe>'+        
                                    
    '</td>'+
                                    
    '<td></td>'+
                                
    '</tr>'+
                           
    '</table>';
             
            $I(
    "btnRm").onclick=function(){
                d.parentNode.removeChild(d);
            }

            $I(
    "btnAdd").onclick=function(){
                document.body.appendChild(d);
                $I(
    "ifm1").focus();
            }

        
    </script>
    </html>

    以上代码在ie6下运行时, 在点击add之前,text可聚焦且内容可选,

    当点击add时候会动态创建一个包含table和iframe的div,并且当前焦点会移到iframe上,这时直接点击remove,

    div移除,text不可聚焦且内容不可选(按tab键可激活),不知道这算不算是IE6的一个BUG。。。。

    目前解决方法:在remove div的时候,将iframe的src设为空,即在

        $I("btnRm").onclick=function(){

          d.parentNode.removeChild(d);

        }

    这里加一句变为:

        $I("btnRm").onclick=function(){

          $I("ifm1").src="";

          d.parentNode.removeChild(d);

        }


    唉。。。。
  • 相关阅读:
    软件工程--团队作业3
    软件工程--团队作业2
    软件工程第二次作业---结对编程
    软件工程第一次作业补充
    软件工程第一次作业
    用Use Case获取需求的方法是否有什么缺陷,还有什么地方需要改进?
    买卖股票的最佳时机
    爬楼梯
    删除排序数组中的重复数字
    1500802035王叔文
  • 原文地址:https://www.cnblogs.com/Random/p/1456038.html
Copyright © 2011-2022 走看看