个人备忘用……
一、 获取某一节点下的所有子孙节点
getElementsByTagName("*")
二、字符串连接的效率
将要链接的字符串做成数组,最后进行join操作,会比单纯字符串+=操作效率更高
三、获取iframe元素
例如获取<iframe id="test"></iframe>的head
IE使用document.getElementById("test").document.getElementsByTagName("head")[0];
其余用document.getElementById("test").contentDocument.getElementsByTagName("head")[0];
自然,跨域的话是访问不到的
四、判断动态加载script是否完成
五、往动态生成的iframe里发送表单
如果iframe利用DOM的方式创建,如下
则表单发送会出现问题。试验了IE和FF
在FF底下,表单会变成无限循环的发送,问题比较好理解,iframe加载完成,执行了表单发送的代码,表单往iframe发送完后,iframe又被onload了一次,于是继续执行发送表单的操作。
将
c.onload = function(){
document.getElementById("sss").submit();
}
改为
c.onload = function(){
c.onload = null;
document.getElementById("sss").submit();
}
理论可以避免。
但IE下更为夸张,表单直接变成弹新窗口发送,目前未找到好解决方案。
如果放弃DOM方式,则用以下代码可以达到往动态生成的iframe里发送表单数据。
直接采用了innerHTML的方式进行动态创建,解决了问题。
六、判断元素b是否被包含在元素a中
可以使用循环法
但有更方便的方法,因为除FF外有contains方法,而FF也可以通过compareDocumentPosition来进行判断
此代码似乎有些问题,对compareDocumentPosition理解还不深,待检验……
七、不使用eval,把json字符串转成json对象
一般都是用eval("("+xx+")");的方式来转换,但其实也可以不使用eval,使用new Function,但效率如何我就不清楚了。
但有一个好处就是,eval之后,作用域可能会出问题,而new Function不会
八、IE为元素绑定事件时的this指针