gpt4 book ai didi

c++ - 与浏览器无关的 C++ DOM 接口(interface)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:48:14 26 4
gpt4 key购买 nike

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

是否有一个通用 API 具有 adapters适用于主要浏览器(和版本)?


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

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

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

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

最佳答案

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

作为定义您自己的接口(interface)的好处,您可以轻松地为您的单元测试编写一个模拟适配器。

关于c++ - 与浏览器无关的 C++ DOM 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/435429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com