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数据的,道理是一样的。
正确写法:
img.onload = function(){
//
};
img.src = "aaa.jpg";
5、form表单中的type=submit的id&name如果为关键字submit将导致form.submit()失效