nodejs - Interfaz C++ DOM independiente del navegador
phantom headless browser (4)
¿Alguna razón por la cual tiene que ser C ++? ¿No puedes usar jQuery? O algo como http://webkit.org/blog/156/queryselector-and-queryselectorall/ en WebKit podría hacer el truco ..
Cuando se programa en C ++ con el DOM del navegador, cada motor tiene un conjunto diferente de interfaces, IE tiene el COM basado en [MSHTML] ( http://msdn.microsoft.com/en-us/library/aa752279(VS.85).aspx ) , Mozilla tiene el Gecko DOM basado en XPCOM, etc.
¿Hay una API común que tenga adaptadores para los principales navegadores (y versiones)?
Como aclaración, la aplicación en cuestión es una aplicación de escritorio escrita en C ++ que interactúa con navegadores, actualmente tenemos bases de código separadas para soporte de IE y Mozilla y estoy tratando de reducir las duplicaciones de lógica y permitir agregar nuevos navegadores con menos esfuerzo .
Un ejemplo concreto puede ser obtener la propiedad innerHTML de un elemento HTML.
// 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);
Nunca he visto uno. Para mi software, simplemente escribí la extensión en el javascript de Firefox, y luego creé un BHO de Internet Explorer (que aún no he terminado).
Su mejor opción parece ser definir su propia interfaz y escribir diferentes adaptadores. En la probabilidad de que su código C ++ no emplee todas las capacidades de desplazamiento DOM, su interfaz solo tendrá que definir un conjunto compacto de funciones transversales.
Como una ventaja de definir su propia interfaz, puede escribir fácilmente un adaptador simulado para la prueba de su unidad.
Moonlight se lanza bajo LGPL, pueden tener algo utilizable para ti, si la licencia está bien.