phantom nodejs how framework casper alternativas c++ dom cross-browser

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.