1,DOM&BOM的起源:DOM起源于Netscape与Microsoft 公司的DHTML(动态HTML)。Document Object Model,文档对象模型,是针对HTML和XML文档的一个API(Application Programming Interface,应用程序编程接口)。相似于JDBC是针对数据库的一套API同样。BOM是Browser Object Model的缩写,简称浏览器对象模型node
2,它的mathods:DOMchrome
getElementById(id) - 获取带有指定 id 的节点(元素)数据库
appendChild(node) - 插入新的子节点(元素)编程
removeChild(node) - 删除子节点(元素)数组
getElembentsBytagName() 返回包含带有指定标签名称的全部元素的节点列表(集合/节点数组)浏览器
getElementsByClassName() 返回包含带有指定类名的全部元素的节点列表app
BOM:框架
window.location:浏览器地址栏信息
window.location.href : 浏览器的url 与 window.location相同
window.location.search: url?后面的内容
window.location.hash : url#后面的内容,能够用于作幻灯片等
window.close(): 存在兼容性
ff : 默认没法关闭
chrome :默认直接关闭
ie:询问用户函数
3,它的contenturl
DOM的content: string :定义文本内容
url:定义url
counter(name)
counter(name, list-style-type)
counters(name, string)
counters(name, string, list-style-type)
attr(X) 定义显示在该选择器以前或以后的选择器的属性。
BOM的content
document对象的一些通用属性:
lastModified:最后修改的日期,是字符串;
referrer:浏览器历史中后退一个位置的URL;
title:标签中显示文本;
URL:当前载入的页面的URL。
改变框架标题:top.document.title=”新的页面标题”;
如把窗口导航到新页面:
document.URL = "http://www.baidu.com";
document对象的集合:
anchors:页面中全部锚的集合;
applets:页面中全部applet的集合;
embeds:页面中嵌入式对象的集合;
forms:页面中全部表单的集合;
images:页面中全部图像的集合;
links:页面中全部超连接的集合。
用document.links[0]访问超连接;
用document.images[0]或document.images["imgHome"]访问图像;
用document.forms[0]或document.forms["frmSubscribe"]访问表单.
4,它的应用;
DOM:
<1> 取得 IHTMLDocument2 的接口指针。根据IE浏览器的运行方式,有多种不一样的方式能够获取文档指针。
<1.1> 若是你在程序中使用MFC的 CHtmlView 视来浏览网页。
取得文档的方法最简单,调用 CHtmlView::GetHtmlDocument() 函数。
<1.2> 若是你的程序中使用了“Web 浏览器” 的ActiveX 控件。
取得文档的方法也比较简单,调用 CWebBrowser2::GetDocument() 函数。
<1.3> 若是你的程序是用 ATL 写的 ActiveX 控件。
那么须要调用 IOleClientSite::GetContainer 获得 IOleContainer 接口,而后就能够经过 QueryInterface() 查询获得 IHTMLDocument2 的接口。
<1.4> 若是你的程序是用 MFC 写的 ActiveX 控件。
那么须要调用 COleControl::GetClientSite() 获得 IOleContainer 接口,而后的操做和<1.3>是一致的了。
<1.5> IE 浏览器做为独立的进程正在运行。
每一个运行的浏览器(IE 和 资源浏览器)都会在 ShellWindows 中进行登记,所以咱们要经过 IShellWindows 取得实例(示例程序中使用的就是这个方法)。
1.6> IE 浏览器控件被一个进程包装在一个子窗口中。那么你首先要获得那个进程的顶层窗口句柄(使用 FindWindow() 函数,或其它任何可行的方法),而后枚举全部子窗口,经过判断窗口类名是不是“Internet Explorer_Server”,从而获得浏览器的窗口句柄,再向窗口发消息取得文档的接口指针
<2> 获得了 IHTMLDocument2 接口指针后,若是网页是单贞的,那么转第<4>步骤。若是是多贞(有子框架)则还须要遍历全部的子框架。这些子框架(IHTMLWindow2),被保存在集合中(IHTMLFramesCollection2),取得集合指针的方法比较简单,取属性 IHTMLDocument2::get_frames()。
<3> 首先取得子框架的总数目 IHTMLFramesCollection::get_length(),接着就能够循环调用 IHTMLFramesCollection::item()函数一个一个地取得子框架 IHTMLWindow2 指针,而后转第<1>步。
<4> 一个文档中可能拥有多个表单,所以仍是一样的道理,先要取得表单的集合(IHTMLElementCollection,其实这个不光是表单的集合,其余元素的集合,好比图片集合也是用它)。这个操做也很简单,取得属性 IHTMLDocument2::get_forms()。
<5> 属性 IHTMLElementCollection::get_length() 获得表单总数目,就能够循环取得每个表单指针了 IHTMLElementCollection::item()。
<6> 在第<5>步中的item()函数,获得的是一个IDispatch的指针,你经过QueryInterface()查询,就能够获得 某类型输入的指针,
BOM的应用
1.弹出新的浏览器窗口
2.移动、关闭浏览器窗口及调整窗口的大小
3.在浏览器的窗口中实现页面的前进、后退功能