2010-04-15 23 views
33

Tengo curiosidad sobre el procedimiento para escribir complementos de navegador para navegadores como Chrome, Safari y Opera. Estoy pensando específicamente en Windows aquí y preferiría trabajar con C++.¿Cómo escribir un plugin para navegador?

¿Hay alguna herramienta o tutorial que detalle el proceso?

Nota: No me refiero a extensiones o complementos ''. Me refiero a un complemento similar a cómo Flash y Adobe Reader tienen complementos para manejar tipos de contenido específicos.

+1

¿Un complemento similar a cómo Flash y Adobe Reader tienen complementos para manejar tipos de contenido específicos? –

+1

@Ben: ¡Sí! Exactamente. –

+1

Como NPAPI se está eliminando gradualmente en Chrome, Pepper Plugin API (PPAPI), "un conjunto de modificaciones a NPAPI para hacer que los complementos sean más portátiles y más seguros", es el reemplazo recomendado. Me gustaría volver a plantear esta pregunta en el contexto de PPAPI, https://en.wikipedia.org/wiki/Google_Native_Client. IIRC Firefox no ha decidido admitir PPAPI, sino que está trabajando con proveedores de complementos para realizar modificaciones de seguridad similares o similares a las de NPAPI y el software de complementos. –

Respuesta

39

Como otros señalan, los complementos para esos navegadores se escriben usando el NPAPI.

Nota: Firefox y Chrome incluirán la mayoría de los complementos to click-to-play soon, con Chrome planeando en phase out NPAPI entirely. NPAPI para nuevos proyectos no se recomienda en este punto.

Recursos para comenzar a usar NPAPI:

El NPAPI en sí es sin embargo relativamente bajo nivel, pero hay herramientas y marcos que pueden ayudarle con ella:

  • FireBreath - cruzada navegador, marco multiplataforma para los plugins
  • Nixysa - generar pegamento-código para NPAPI plugins
  • JUCE - marco de aplicación también proporciona soporte para plugins
  • QtBrowserPlugin - Qt marco plugin para el navegador basado
+1

El enlace "npsimple" parece ser incorrecto. ¿Es este el correcto: https://github.com/mikma/npsimple? –

+0

@RobW Sí, el otro enlace era completamente irrelevante. Parece ser un sitio web sobre una aplicación de teléfono inteligente llamada "Web of Cam". –

+0

Solucionado ahora, gracias. –

0

Si conoces Qt entonces han conseguido algunas clases que hace que sea más fácil implementar plug-ins de navegador

4

investigué algunos marcos listados por Georg, esto es lo que me sale:

  1. FireBreath. Creo que es casi el mejor disponible. Puede crear un complemento de navegador multiplataforma con FireBreath en unos días. Encontré algunos inconvenientes: no es compatible con los caracteres UTF-8 en Windows. Por ejemplo: si hay caracteres chinos en un nombre de archivo, no puede leer el contenido de ese archivo. Creo que boost/locale puede resolver este problema.Pero FireBreath no contiene boost/locale. Sí, puedes usar boost externo, pero pasé varios días configurando y retocando y todavía no logro compilarlo en Windows. El autor usa cmake para reconocer el código y los subproyectos. Y creó una gran cantidad de scripts bat o shell y macros de cmake, es muy difícil de entender y configurar. En resumen, si quieres algo que FireBreath no proporciona actualmente, tendrás mala suerte, es muy difícil agregar nuevas funciones.

  2. Nixysa. No creo que se esté desarrollando activamente. La documentación es pobre. Y de los comentarios de la página wiki: https://code.google.com/p/nixysa/wiki/HelloWorldWalkThru Podemos saber que los usuarios no pudieron obtener ayuda en absoluto y tenían problemas para ejecutarlo en Windows

  3. JUCE. No es especialmente para crear complementos de navegador. NO es compatible con Linux. El autor cree que NPAPI va a morir, por lo que no tiene ningún plan para admitir Linux o agregar nuevas funciones.

  4. QtBrowserPlugin. No puede encontrarlo en la documentación posterior a QT 4.5. En otra palabra, no se mantiene (y se elimina de Qt 5.0)

Voy a actualizar esta respuesta una vez que encuentre más.

Actualización: Chrome se cayó NPAPI soporte. Creo que en el futuro será cada vez más difícil escribir complementos en C++ porque carece de soporte de los navegadores.

Cuestiones relacionadas