javascript问题积累

1、判断iframe是否加载完成方法

【动态创建】

var iframe = document.createElement("iframe");
iframe.src
= "order.do?method=toUpdate&id="+id;
if (iframe.attachEvent){//ie
iframe.attachEvent(
"onload", function(){
alert(
"Local iframe is now loaded.");
});
}
else {//非ie
iframe.onload
= function(){
alert(
"Local iframe is now loaded.");
};
}
document.body.appendChild(iframe);

【静态创建】

<iframe src="order.do?method=orderMemo" id="mainCon" onload="Local iframe is now loaded" ></iframe>

2、innerHTML的一些问题

【加载script标签】当使用innerHTML写入<script></script>标签的时候如果在此标签前面没有任何内容的时候ie是会忽略script标签的,而Moziila/Firefox 和 Opera是可以正常加载的,但是并不会兼容所有浏览器执行脚本的内容,所以最好的方法就是通过appendChild加载对象的方式。

var srcs = '<script reload="1" src="http://192.168.1.43/uchome/api/uc.php?time=1276745495" type="text/javascript"><\/script>'.match(/src="[^"]*/g);
var headScriptUC = document.createElement('script');
var srcs = srcs.uclogin.match(/src="[^"]*/g);
headScriptUC.src
= srcs[0].substring(5,srcs[0].length);

【ie,firefox】读取innerHTML的值是不同的,ie获取的innerHTML字符串中是不存在"与换行符号的,而firefox的读取是完全保留dom的格式的,所以在读取时的正则操作时一定要注意这一点。/<i\sid=["]?[0-9][^.]?["]?>/ 正则要多判断一下了

3、keypress和keydown,keyup

keydown事件:当用户按下键盘上面的一个键时会触发,用户一直按着这个键他就会持续触发。
keypress事件:有一点点的不同,用户按着 一个字符键才触发,就是说用户按了一个能在屏幕上输出字符的按键keypress事件才会触发,比如我们往一个textarea里面输入字符。
keyup 事件:很简单,当我们释放一个按键时候会触发。

如果你想获取用户实际敲击的按钮,用keyDown事件来获取事件对象,并获取keyCode,这 在所有浏览器都行的通。

如果你想获取用户输入的字符,那么就使用keypress来获取,然后获取charCode(火狐和 safari)或是keyCode(其他浏览器)。

4、ie下img.onload()事件读取缓存时没有执行。

不是IE没有触发onload事件,而是因为加载缓冲区的速度太快,以至于没有运行到img.onload的时候,onload事件已经触发了。这让我想 到了Ajax,我们在写xmlhttp的时候,都是先指定onstatechange的回调函数,然后再send数据的,道理是一样的。

正确写法:

var img = new Image;
img.onload 
= function(){
 //
};
img.src 
= "aaa.jpg";

5、form表单中的type=submit的id&name如果为关键字submit将导致form.submit()失效

posted @ 2010-06-08 14:11  chesihui  阅读(250)  评论(0编辑  收藏  举报