IE里的探索之浏览器概览

2008-02-23 05:29:07来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

(作者:青苹果工作室编译 2001年02月08日 13:28)

  本节解释Microsoft Internet Explorer 4.0及更高版本的体系结构并提供使用他的组件时用到的信息,包括以下内容:* 体系结构概览;* 选择正确的组件;* 提供附加控制;* 控制上下文相关菜单;* 扩展动态 HTML 对象模型;* 控制下载;* 安全管理。

体系结构概览
  Internet Explorer 使用 Microsoft ActiveX 控件和 Active Document 接口来连接各个组件。下图提供了一个高层的概览:


  IExplore.exe 在最上层;他是个在 Internet Explorer 加载时被实例化的一个小应用程式。这个可执行的应用程式使用 Internet Explorer 来完成浏览、历史维护、收藏夹维护、HTML 语法分析和翻译等,同时他为单独的浏览器提供工具栏和框架。IExplorer.exe 直接引用 Shdocvw.dll 组件。

  然后 Shdocvw.dll 引用 Mshtml.dll 组件,当用户浏览到特定的类型的文档时,他还能够引用其他能够加载到浏览其中的 Active Document 组件 (如 Microsoft Office 应用程式)。Shdocvw.dll 提供和浏览、内置连接、收藏家和历史管理连同图像支持相关的功能。这个DLL 也向他的宿主提供接口以便能够像一个 ActiveX 控件相同被单独引用。Shdocvw.dll 组件更经常作为 WebBrowser 控件被引用。内置连接是指点击已加载文档中的 HTML 链接,然后在 WebBrowser 控件的同一实例中加载一个新的 HTML 文档的能力。假如只引用了 Mshtml.dll,点击链接导致新的浏览器实例产生。

  Mshtml.dll 是在 Internet Explorer 4.0 或更高版本中进行 HTML 语法分析和翻译的组件,同时通过动态 HTML对象模型提供 HTML 文档。这个组件引用脚本引擎、Microsoft 虚拟机、ActiveX 控件、插件连同他加载的 HTML 文档可能引用的其他对象。Mshtml.dll 实现 Active Document 服务器接口,这样,就能通过标准 COM 接口引用他。

  使用框架时,Shdocvw.dll 又被 Mshtml.dll 引用,这样就形成了第归。这种情况下,每一个帧都是个引用 Mshtml.dll 的 Shdocvw.dll 的实例。

  由于这是个基于 OLE 的体系结构,ActiveX 控件常用的周边属性也同样适用于 Internet Explorer 组件。通过这种方式,WebBrowser 控件的宿主能够配置周边属性以过滤加载的文档引用的任何帧和控件。

选择正确的组件控件
  WebBrowser 控件提供丰富的宿主需要的典型功能,如内置连接等。这样,对大多数浏览或查看 HTML 文档的应用程式而言,引用 WebBrower 比引用 MSHTML 更合适。只有特别的,例如,对 HTML 进行语法分析的应用程式我们建议引用 MSHTML。

  还需要注意的是,虽然引用 MSHTML 稍微比引用 WebBrowser 控件轻巧一点,但节约的开销很少能补偿那些实现在 WebBrowser 中已有功能时所需的额外工作。WebBrowser很可能已被加载到内存,并且浏览包含框架的页面也会导致 WebBrowser 作为标准工作集的一部分从而被加载。

提供附加控制
  WebBrowser 和 MSHTML 组件的宿主能够控制特定的功能。对 WebBrowser 控件而言,这包括浏览并且在加载文档时接受事件。这两个组件都能通过实现 IDocHostUIHandler 和 IDocHostShowUI 接口提供附加控制。这些接口通常用于替代浏览期默认提供的上下文相关菜单。他们的用途还包括配置三维边框、替代保存选项的注册表项的位置和扩展动态 HTML 对象模型。

  组件通过在宿主应用程式实现的 IOleClientSite 上调用 QueryInterface 从宿主获得这些接口。

控制上下文相关菜单
  引用 WebBrowser 控件时有一个常见的需要,就是能够替代或添加在浏览器窗口中点击右键时显示的上下文相关菜单。那些使用 WebBrowser 控键查看丰富内容而不希望用户知道他们在查看 HTML 的应用程式特别需要这种能力。同时,这种能力对不希望用户能看到内容的 HTML 源代码的应用程式很有用处。

  有两种技术能够完成这一工作。第一种涉及到使用 IDocHostUIHandler 接口并允许应用程式禁止或替代上下文相关菜单。第二种技术使用注册表并允许扩展已有的上下文相关菜单。

  ●替代上下文相关菜单

  通过实现 IDocHostUIHandler::ShowContextMenu 方法能将 WebBrowser 控件的 上下文相关菜单整体替换。从此方法中返回 E_NOTIMPL 或 S_FALSE 告诉 WebBrowser 他应该显示他自己的标准上下文相关菜单。然而,返回 S_OK 致使 WebBrowser 不显示 他的菜单,并假定宿主程式采取了适当的行动。宿主程式能够禁止任何上下文相关菜单 或使用他自己的上下文相关菜单。向实现这一方法的宿主程式提供的参数使宿主程式 能够识别 WebBrowser 将显示的默认菜单和菜单的坐标。这样就向宿主程式提供了全部 上下文相关菜单。例如,宿主程式能够选择仅仅替代图像的上下文相关菜单而保留标准 的上下文相关菜单。

  ●添加标准上下文相关菜单

  通过在注册表里添加项目并将他们连接到执行脚本的 URL,能够向WebBrowser已有的上下文相关菜单中添加菜单项。要向标准上下文相关菜单中添加菜单项,创建或打开:

  HKEY_CURRENT_USER

      Software

        Microsoft

          Internet Explorer

            MenuExt

  在此位置,以您所希望在菜单中显示的文本为键名创建新键。键的默认值为将要执行的URL。键名能够包括&字符,表示紧跟在 & 之后的字符将带有下划线。URL 将被加载到一个隐藏的 HTML 对话框,任何嵌入脚本将被执行,然后关闭对话框。隐藏的 HTML 对话框的 external.menuArguments 属性包含了执行上下文相关菜单项的窗口的 window 对象。

  以下注册表内容向 WebBrowser 的上下文相关菜单中添加标题为“My Menu Item”的菜单项,他执行包含文档 c:\myscript.htm 中的嵌入脚本。

  HKEY_CURRENT_USER

      Software

        Microsoft

          Internet Explorer

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: IE里的探索之向标准上下文相关菜单里添加条目

下一篇: ie里的探索之定制浏览器好助手(下)