移动开发中遇到的坑
flex布局在qq,uc浏览器中有问题,必须强制让内部flex的元素是display block;
100%要想撑满父元素,则父元素必须有明确的高度。否则撑不起来。
如果定位的元素想要撑满其相对的元素,有个简单办法,那就是同时设置left,right,top,bottom为0.
1px边框问题,有多种解决方案。
iconfont方式使用简单点的图标,自定义性更强。
DOM操作中,children属性仅包含Element类型的节点,而childNode属性包含了所有的节点。例如document.children就是实实在在你写的节点的数组,而不包含隐含的那些文字节点。
document指代的是整个html文档,而其第一个子元素是文档声明,第二个子元素是html节点。 html这个节点可以通过多种方式来拿到,比如document.documentElement, 比如document.children[0], 比如document.childeNodes[1]
故scrollTop属性,你也得通过documentElement或者document.body.scrollTop来使用咯。
对象的属性若是引用类型,对其进行重新赋值的话,仅仅是改变该属性的指向。而没有改变真正的对象。假如有其他人也指向那个对象,则那个对象依然存在。
低版本IE里使用returnValue=false来代替event.preventDefault阻止默认行为; 使用cancelBubble=true代替event.stopPropagation来停止冒泡。
事件代理原因:事件处理程序以及事件绑定过多,会影响内存和页面响应; 而且代理的方式如果是绑定到document上,就可以不需等待Dom元素构造出来; 而且采用事件代理可以减少dom引用和dom查询,移除和查询dom都比较方便。
绑定事件的4种方式:
dom0: 在dom之外,使用btn.onclick = function() {}
dom2: 在dom之外,使用btn.addEventListener('click', function(){}, false)
在html里面: <a onclick="直接写js代码">, 此时js代码里this表示当前元素
在html里面: <a onclick="调用一个外部js函数">, 此时外部函数里,this表示全局window对象。
dom0,dom2等事件handler执行上下文在元素上的情况,this表示的就是那个绑定事件的元素,也就是所谓的event.currentTarget.
js中的json可以使用2种复合类型,4种基本类型,否则无法parse。 所以,undefined不能使用,Date等类型不能使用。非要用的话,请使用字符串代替。