1,去掉数组同名字符:

var str= ['zzz','abc','def','abc','def','cccc','aaaa','zzzz'];

var reg = /\b([^,]+),(?=.*?\b\1\b)/g;alert(str.join(",").replace(reg,""));

var str= 'aaa bbb aaa bbb ddd aaa';var reg = /(\S+)\s(?=.*?\b\1\b)/g;alert(str.replace(reg,""));

2,获取元素当前样式:

ie:element.currentStyle.width;

ff:

window.getComputedStyle(element,null).width;

window.getComputedStyle(element,null).getPropertyValue("position");

3,haslayout:是否根据父元素来布局元素属性

一个元素要么自己对自身的内容进行计算大小和组织,要么依赖于父元素来计算尺寸和组织内容。

true:负责对自己和可能的子孙元素进行尺寸计算和定位

行内&计算定位

zoom:1;

4,阻止元素默认事件、冒泡;      让元素不回传服务器,函数后加return false;即可  ;      让.net中直接执行服务端对应js名方法,return fun();其中加true,false即可。

  function stopDefault(e) {

            if (e && e.preventDefault){

                e.preventDefault();//阻止元素默认事件

                e.stopPropagation();//阻止向上冒泡

                }

            else {

                window.event.returnValue = false;//阻止元素默认事件(ie)

                window.event.cancelBubble = true;//阻止冒泡

            }

            //return false;

        }

阻止默认事件:ie由于attachEvent有返回值,所有绑定事件里加return false;有效,相当于onclick="javascript:return false;";

       chrome等,addEventListener(),无返回值,所以在里面加return false;无效,需要e.preventDefault();

5,CSS  expression表达式关于document.documentElement/document.body,ie需在前面加n=计算或其他操作

eval(document.documentElement.scrollTop)+"px";

eval的问题是bug, ie6在分析的时候会进行一定程度的优化,实际上不是必须的, 换成别的也可以,是bug, 这不是正确的用法,

top:expression(n=document.body.scrollTop+'px');这样也是可以的,仅限ie,是ie对于expression的优化有bug,n可以随意换成其他

直接把document.body.scrollTop或者document.documentElement.scrollTop放上去的话会被优化掉.

但是如果在前边加点别的操作, 让ie认不出来它, 就没问题了.

top:expression(_(document.body.scrollTop)+'px');也可以。

expression会在文档css熟悉发生变化的时候重新计算。

6,event/e

if(is ff..)
{
       var $E = function(){var c=$E.caller; while(c.caller)c=c.caller; return c.arguments[0]};
       __defineGetter__("event", $E);
}

替代
function handle(e)
{
    e = e || event;
    ...
}

7,setTimeout,setInterval

可以用一组队列管理它们触发产生的ID,逐个清理,方式清理不到前一个产生的要执行的动作。

8,window.onresize窗口大小改变触发的事件,

node.padding/margin,各浏览器可取可赋值。

ie6在页面加载完之后改变iframe的属性,iframe中的css样式不会立刻执行,需要刷新才会执行。其他浏览器在属性改变后会立刻重新渲染。

9,html中的file控件,可传大小不限的文件到服务端,只要不卡死,但是不会续传,若用form提交到服务端post不过去,可以检查服务端的post最大限制。post_max_size

 

10, innerHTML

innerHTML有很多bug的
1.ie6的table不能插入东西(只要插入tbody或thead,是可以插入)2.ie的select不能插入option3.ie的会删除掉字符串前面的空格4.浏览器不会执行script标签5浏览器不会执行在style中插入内容6.使用object,embed的innerhtml会报错

11,  数组 array  []

var arr=[1,2,3];    arr.fun=function(){};  arr.ready=function(){};  

=>      arr.length=3;  arr.fun();

12, 获取元素自定义属性
document.getElementById(id).att/document.getElementById(id).getAttribute(att)
属性取值法和dom操作法..ie/ff

13, 时间比较
时间比较大小可以直接比较符号比较,获取当前时间之前/后几天/月/年的实现:
new Date(otherDate.getTime()-days*1000*60*60*24)或
otherDate.setMonth(otherDate.getMonth()-months)

 

www.LcKey.com 提供支持 

posted on 2011-03-09 15:42  LcKey  阅读(235)  评论(0编辑  收藏  举报