zoukankan      html  css  js  c++  java
  • DOM&BOM

    1,DOM&BOM的起源:DOM起源于Netscape与Microsoft 公司的DHTML(动态HTML)。Document Object Model,文档对象模型,是针对HTML和XML文档的一个API(Application Programming Interface,应用程序编程接口)。类似于JDBC是针对数据库的一套API一样。BOM是Browser Object Model的缩写,简称浏览器对象模型

    2,它的mathods:DOM

    getElementById(id) - 获取带有指定 id 的节点(元素)

    appendChild(node) - 插入新的子节点(元素)

    removeChild(node) - 删除子节点(元素)

    getElembentsBytagName() 返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)

    getElementsByClassName() 返回包含带有指定类名的所有元素的节点列表

     BOM:

    window.location:浏览器地址栏信息
    window.location.href : 浏览器的url 与 window.location相同
    window.location.search: url?后面的内容
    window.location.hash : url#后面的内容,可以用于做幻灯片等
    window.close(): 存在兼容性 
    ff : 默认无法关闭 
    chrome :默认直接关闭 
    ie:询问用户

    3,它的content

    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.在浏览器的窗口中实现页面的前进、后退功能



     

  • 相关阅读:
    webstorm 2017 激活破解 最新 2018
    phpexcel 导出xsl乱码
    微信小程序的z-index在苹果ios无效
    onenote架设在局域网服务器
    .gitignore忽略多层文件夹用**
    phpstorm 使用xdebug断点
    Phpstudy 无法启动mysql
    git使用kdiff3合并乱码问题
    小程序回退刷新操作
    Navicat 连接远程服务器mysql 长时间不操作会连接很久
  • 原文地址:https://www.cnblogs.com/womadenvxushiwangjunkai/p/9832387.html
Copyright © 2011-2022 走看看