关于浏览器的bug和解决方案(非hack法)

  1. <p>test1<span>test2</span></p>正则表达式

       设置span右浮动,在IE6/7下span会掉到p的下一行的最右边。chrome

       解决方案:用绝对定位position:absolute代替。数组

  2. <div>这里听任何内容</div>测试

       设置div的height为0,在IE6下无效。动画

       解决方案:无需强调动画效果能够用display:none/block代替。spa

  3. <form><button id="test">test</button></form>code

        估计不少同窗为了作个简单测试会像上面这样写,像这样写,用js给button绑定点击事件后,在chrome、IE8/9/10/11下,点击会出现事件闪一下而后没反应,而下IE6/7下倒是正常的。这时候会发现闪一下是由于执行了表单默认的提交动做(注意看URL后面多出来一个问号就秒懂了)而没有执行自行绑定的onclick事件。
    orm

         解决方案:使用<form><input type="button" value="test" id="test"  /></form>或者在onclick事件中return false;对象

  4. IE6/7/8不支持getElementsByClassName方法,因此须要本身写。事件

        解决方案:如下两种写法提供参考。

//第一种
function getElementsByClassName(className,tag){  
              //对tag进行过滤,取出全部tag对象
              var allTags = document.getElementsByTagName(tag);  
              var matchingElements = new Array();  
                
              //正则表达式  
              className = className.replace(/\-/g,"\\-");  
              var regex = new RegExp("(^|\\s)" +className+ "(\\s|$)");  
                
              var element;  
                
              //将取出的tag对象存入数组中。  
              for(var i = 0;i < allTags.length;i++){  
                  element = allTags[i];  
                  if(regex.test(element.className)){  
                      matchingElements.push(element);  
                      }  
                  }  
              return matchingElements;  
    }
    if (document.getElementsByClassName) {
		。。。
	}else{
		。。。
	};

//第二种,直接放在js最前面,后面则直接使用getElementsByClassName便可。 
if(!document.getElementsByClassName){
  document.getElementsByClassName = function(className, element){
    var children = (element || document).getElementsByTagName('*');
    var elements = new Array();
    for (var i=0; i<children.length; i++){
      var child = children[i];
      var classNames = child.className.split(' ');
      lassNames.length; j++){
        if (classNames[j] for (var j=0; j<c== className){ 
          elements.push(child);
          break;
        }
      }
    } 
    return elements;
  };
}
相关文章
相关标签/搜索