在 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<nsIDOMNSHTMLElement> elem = do_QueryInterface(obj);
if (elem)
elem->GetInnerHTML(html);
// IE
CComBSTR html;
MSHTML::IHTMLElementPtr elem = obj;
if (elem)
elem->get_innerHTML(&html);