关于MSHTML (转)

关于MSHTML(转)[@more@]microsoft.com/default.ASP”target=_top>MSDNHome>MSDNLibrary>ProgrammingandR…

大家好,又见面了,我是你们的朋友全栈君。

关于MSHTML (转)[@more@]
microsoft.com/default.

ASP” target=_top>MSDN Home > 
MSDN Library > 
Programming and Reusing the Browser > 
Overviews/Tutorials

关于MSHTML

访问动态HTML(dhtml)对象模型的所有接口以IDispatch为基类,而且也是被用于脚本的对象模型的基础。因此对要操纵对象模型的任何人来说很重要的是熟悉定义在动态的HTML介绍的概要和MSHTML包含的对象模型参考中的结构和功能。

MSHTML参考接口和脚本对象这一节说明了对象如何在DHTML对象模型里面映射到接口。举例来说,使用这一个映射,你可以看到IHTMLDocument2接口映射到文档对象。对接口的进一步的研究说明了如何通过get_put_方法访问对象的属性。对象的方法映射到可用的接口的方法,而且事件可以用标准的对OLE自动化连接点来捕获。

如何使对象模型接口的样例的演示在Colbtn、Driller和WalkAll示例中,这些示例在DOWNLOADs/samples/inte.NET/browser/colbtn/default.asp”>Colbtn示例源代码页面、Driller示例源代码页面WalkAll示例源代码页面上。

  • 使用接口的建议
  • 获得文档接口
  • 使用文档接口
  • 相关的主题

使用接口的建议

通常,在文档中可以用脚本完成的任何事都可以通过使用接口操纵对象模型来完成。因此推荐了在写使用对象模型接口的代码之前, 开发者应该在一个 HTML文档里面使用脚本设计功能原型。

下列HTML例子说明如何用脚本导航文档的all集合而且获得文档的每个元素的标签名字。等价的使用对象模型接口Microsoft (R) Visual C++(R)代码演示在Driller示例源代码页面WalkAll示例源代码页面上。

例子

Page Title

function Loaded()

{

  var c = document.all.length;

  var i;

  for(i = 0; i < c; i++)

  {

  spanTAGS.innerHTML = spanTAGS.innerHTML + document.all.item(i).tagName + “
“;

  }

}

获得文档接口

要开始使用对象模型接口,就要从文档获得IHTMLDocument2接口。一旦你有了这个接口,你就能存取文档中所有的元素。文档接口如何被获得依赖于你的应用程序如何实现。 每一个下列场合需要以不同的方式获得文档接口。

  • 集成MSHTML时
  • 集成浏览器控件的一个实例时。
  • 从一个网页中包含的一个Microsoft ActiveX(R)控件。

集成MSHTML时获得文档接口

当集成一个MSHTML对象的时候,使用 CoCreateInstance创建对象。 一旦创建了对象,你可以调用它的QueryInterface 方法,请求IID_IHTMLDocument2。WalkAll示例源代码页面的WalkAll样例说明了该如何做。

集成浏览器控件时获得文档接口

当集成浏览器控件的时候,执行下列步骤获得文档接口:

  1. 调用 webbrowser/reference/ifaces/iwebbrowser2/document.asp”>IWebBrowser2::get_Document 获得文档的 IDispatch 接口。(译者注:MFC的CHtmlView的GetHtmlDocument方法,浏览器控件的Document属性或者DHtmlEdit控件的dom属性也可以用于获取文档接口)
  2. 调用在前面步骤中获得的IDispatch指针的的QueryInterface,请求IID_IHTMLDocument2。

从ActiveX控件获得文档接口

ActiveX文档的存取动态HTML节解释了如何从ActiveX (R)控件获得文档接口。

使用文档接口

使用文档接口

一旦你获得了文档接口,你就可以使用任何一个IHTMLDocument2接口获得或修改文档的属性。这通常包括从文档包含的不同的元素中得到一些IHTMLElementCollection接口。

一个非常普遍的集合对象是all集合对象。all集合对象是通过使用IHTMLDocument2::all (译者注:原文如此,似乎应该改成get_all)方法获得的。 这个方法返回一个包含文档的所有元素的IHTMLElementCollection接口。然后你可以使用IHTMLElementCollection::item方法枚举元素。 IHTMLElementCollection::item方法为你提供一个你能调用 QueryInterface ,请求IID_IHTMLElement的IDispatch指针。这将会给你一个你能用来为个别的元素获得或设置信息的IHTMLElement接口指针。

大多数的元素提供一个接口操纵那个特定的元素。这些元素相关的接口名字具有IHTMLXXXXElement的格式,这里XXXX是元素的名字。要获得元素相关的接口,可以在IHTMLElement接口上调用QueryInterface,请求被需要的元素相关的接口。举例来说img 元素提供一个 IHTMLImgElement接口以可能用来明确地操纵img元素。要查看可用的元素相关的接口列表,查看接口和脚本对象的接口列表。

相关的主题

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-960761/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-960761/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126318.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 利用python进行数据分析豆瓣_如何用python做数据分析

    利用python进行数据分析豆瓣_如何用python做数据分析一、处理数据的基本内容数据分析是指对数据进行控制、处理、整理、分析的过程。在这里,“数据”是指结构化的数据,例如:记录、多维数组、Excel里的数据、关系型数据库中的数据、数据表等。二、说说

    2022年8月4日
    6
  • 10v转16v_颜色代码转rgb

    10v转16v_颜色代码转rgb/*  NV12ToARGBcolorspaceconversionCUDAkernel  ThissampleusesCUDAtoperformasimpleNV12(YUV4:2:0planar)  sourceandconvertstooutputinARGBformat*/#include

    2022年9月24日
    1
  • 软件测试用例编写方法_接口测试用例设计思路

    软件测试用例编写方法_接口测试用例设计思路编写测试用例HttpRunnerv3.x支持三种测试用例格式pytest,YAML和JSON。官方强烈建议以pytest格式而不是以前的YAML/JSON格式编写和维护测试用例格式关系如下图所示

    2022年7月29日
    5
  • 从零开始搭建 web 聊天室(一)

    从零开始搭建 web 聊天室(一)本篇将介绍如何快速、简便地使用socket.io库搭建一个web在线聊天室。前端并没有使用任何框架。后端使用express框架搭建简易的后端。socket.io库本质上是基于websocket上进行封装。改变了以往只能前端发送请求,后端才能返回给前端信息,这样的一问一答形式。实现了前后端双向通信,即后端也可以主动push信息到前端。websocket尤其适用于在线聊天或者实时交互的场景。已经广泛用于直播平台、视频平台等。本篇实现:最基本的前后端信息交互。代码地址:https

    2022年6月22日
    21
  • ★ Android基础篇 初步NDK开发 .SO文件生成与JIN调用

    ★ Android基础篇 初步NDK开发 .SO文件生成与JIN调用

    2021年3月12日
    188
  • 基于51单片机步进电机控制[通俗易懂]

    基于51单片机步进电机控制[通俗易懂]实现功能:1、用矩阵键盘设定电机目标转速及旋转方向,范围100~300转/分;2、测量、显示电机实际转速和方向(正转显示“P”,反转显示“N”);从实现功能上分析,软件可以分解3个功能模块:1,步进电机控制模块2,矩阵键盘输入模块3,显示输出模块步进电机工作原理步进电机通过输入脉冲信号进行控制,即电机的总转动角度由输入脉冲总数决定,而电机的转速…

    2022年5月31日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号