setTimeout疑惑
其实对于这个函数的用法,一直很模糊。
MDN的文档中,setTimeout方法有两种语法:
1. setTimeout(func,delay,arg1,arg2...) 2. setTimeout(code,delay)
返回值是一个ID,可以在clearTimeout中作为参数,用于取消这个延时函数。
对于第二种语法,其实并不推荐,原因和eval()相同。
因此来说说第一种语法,func参数为要执行的函数名,不能带括号,除非你知道自己在干嘛,也不能用引号包围,否则就变成第二种语法了;delay参数为需要延迟的毫秒数;后面的参数为传递给func的参数,但是在IE9以前的浏览器中不支持这种语法,所以更多的时候只有两个参数。
在来说说在chrome下发现的问题:
我要让下面这段代码延时执行:
$('#test').addClass('test');
所以我写了这样一段代码:
setTimeout($('#test').addClass('test'),1000);
照例说哪个语法都不符合,但是在IE8下,它能正常执行并且不报错。在FF下,它也能执行,但是会报错:SyntaxError: missing ] after element list test.html (第 18 行,第 8 列)。最奇怪的是在chrome下,它也能实现效果,也报错了,但是报的错却奇葩的让人看不懂啊:Uncaught SyntaxError: Unexpected identifier 除了这句话之外再无任何提示,没有写明出错的地方,也没有说哪个字符是unexpected的。
求解啊!!!
最近还发现了chrome中文环境下的最小字体设置:
在中文环境中,默认状态下chrome设置了最小字体为12像素,防止过小字体引起中文显示模糊。这时候如果设置了font size小于12px,那么字体将会以12px显示。在英文环境中则默认没有最小字体的限制。
如果要修改最小字体的设置,可以在设置->显示高级选项->网络内容->自定义字体中的最小字号设置。
luckyGirl - 2013 年 11 月 14 日 11:14 上午
那段test的代码 我觉得是语法问题才会导致报错,第一个参数可以是函数或直接是代码,而$(‘#test’).addClass(‘test’);返回是一个对象并不是function,因此应该按照code的规则传入参数 即:
setTimeout(“$(‘#test’).addClass(‘test’);”,1000)
至于不同的报错,应该是不同浏览器对这一错误的处理方式不同
lovecicy - 2013 年 11 月 15 日 12:48 下午
恩 有理
luckyGirl - 2013 年 11 月 14 日 11:16 上午
PS. 关于中文版Chrome问题也是TRAC的一个坑,要改会很恐怖……
lovecicy - 2013 年 11 月 15 日 12:48 下午
这个我不管,让徐辉他们改吧