BOM: browser object model
核心对象就是window
计算HTML文档显示的高度和宽度:FF下是window.innerWidth和window.innerHeight,IE下是document.body.offsetHeight和document.body.offsetWidth
window.open(url,name),打开一个新窗口
参数url:如果url跨域父子窗口将禁止通信,很明显的安全原因。并且最好是响应用户事件打开窗口,不然会被当成弹窗。
参数name:_blank始终新窗口,_self始终自己,随意起个名字,打开唯一一个叫这个名字的窗口,这个属性在target的时候用到
window.close() 关闭js自己打开的窗口,不然ie会提示是否关闭ff没反应,使用open的返回值关闭,比如w.close()
父子通信:父窗口打开子窗口会返回子窗口对象,子窗口内有一个属性opener,和function的caller类似,然后就实现通信了。
iframe通信:父窗口内得到iframe对象后有个属性contentWindow得到子窗口window对象,iframe的窗口有window.parent得到父窗口对象,同样跨域会有问题,而且一定要有onload事件,因为加载不是同步的。
DOM:document object model,说穿了就是一棵树,用js操作树上面的节点
节点分为元素节点和文本节点,注意空白文本在w3c里也是节点,但ie会无视这些文本节点
节点有的属性:nodeType(元素返回1文本返回3) nodeName(元素返回tagName文本返回特殊值#text) nodeValue(元素返回空文本返回文本)
得到这些元素节点:document.getElementById() document.getElementsByTagName()
然后一些节点关系属性:firstChild lastChild nextSibling previousSibling childNodes parentNode
对节点的操作:removeChild appendChild insertBefore
设置属性:点运算符直接可以设置,但遇到关键字class等就得变化(class变成className);还有个方法就是函数setAttribute()和getAttribute(),类似oop的accessor和mutator,但这个也得转换。ie下还是得className