当前位置:  开发笔记 > 编程语言 > 正文

浏览器不可知的C++ DOM接口

如何解决《浏览器不可知的C++DOM接口》经验,为你挑选了1个好方法。

当用C++编写针对浏览器的DOM时,每个引擎都有一组不同的接口,IE有基于COM的[MSHTML](http://msdn.microsoft.com/en-us/library/aa752279 (VS.85) .aspx ),Mozilla有基于XPCOM的Gecko DOM等.

是否有有一个共同的API 适配器的主流浏览器(和版本)?


作为澄清,有问题的应用程序是一个用C++编写的桌面应用程序,它与浏览器交互,目前我们有单独的代码库来支持IE和Mozilla,我正在尝试减少逻辑重复,并允许用更少的工作量添加新的浏览器.

一个具体的例子是获取HTML元素的innerHTML属性.

// Firefox
nsAutoString html;
nsCOMPtr elem = do_QueryInterface(obj);
if (elem)
    elem->GetInnerHTML(html); 

// IE
CComBSTR html;
MSHTML::IHTMLElementPtr elem = obj;
if (elem) 
     elem->get_innerHTML(&html);

Ates Goral.. 5

您最好的选择似乎是定义自己的界面并编写不同的适配器.在您的C++代码不会使用所有DOM遍历功能的可能性中,您的界面只需要定义一组紧凑的遍历函数.

作为定义您自己的界面的好处,您可以轻松地为您的单元测试编写模拟适配器.



1> Ates Goral..:

您最好的选择似乎是定义自己的界面并编写不同的适配器.在您的C++代码不会使用所有DOM遍历功能的可能性中,您的界面只需要定义一组紧凑的遍历函数.

作为定义您自己的界面的好处,您可以轻松地为您的单元测试编写模拟适配器.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有