Come scrivere un plugin per il browser?

Sono curioso della procedura per scrivere plugin per browser per browser come Chrome, Safari e Opera. Sto pensando specificamente a Windows qui e preferirei lavorare con C ++.

Esistono strumenti o tutorial che descrivono il processo in dettaglio?

Nota : non mi riferisco a estensioni o “addons”. Mi riferisco a un plugin simile a come Flash e Adobe Reader hanno plugin per gestire specifici tipi di contenuto.

Come altri sottolineano, i plugin per quei browser sono scritti usando l’ NPAPI .

Nota: sia Firefox che Chrome aggiungeranno presto la maggior parte dei plug -in al click-to-play , con Chrome che pianifica l’ eliminazione completa di NPAPI . NPAPI per i nuovi progetti è scoraggiato a questo punto.

Risorse per iniziare con NPAPI:

  • Sezione plugin MDC
  • tutorial NPAPI in tre parti
  • gestione della memoria in NPAPI
  • npsimple : il “Hello World” dei plugin NPAPI
  • npapi-sdk : l’origine per le intestazioni canoniche NPAPI
  • Plugin di test di Mozilla – utile per cercare casi d’uso specifici per NPAPI

Lo stesso NPAPI è tuttavia relativamente di basso livello, ma ci sono strumenti e framework che possono aiutarti con questo:

  • FireBreath – cross-browser, cross-platform frame-work per plugin
  • Nixysa : genera il glue-code per i plugin NPAPI
  • JUCE – framework applicativo che fornisce anche supporto per i plugin
  • QtBrowserPlugin – Framework di plugin per browser basato su Qt

Ho studiato alcune strutture elencate da Georg, ecco quello che ottengo:

  1. Respiro di fuoco. Penso che sia quasi il migliore disponibile. Puoi creare un plugin per browser multipiattaforma con FireBreath in pochi giorni. Ho trovato alcuni contro: non supporta i caratteri utf-8 su Windows. Ad esempio: se ci sono caratteri cinesi in un nome di file, non è ansible leggere il contenuto di quel file. Credo che boost / locale possa risolvere questo problema. Ma FireBreath non contiene boost / locale. Sì, puoi usare boost esterno, ma ho trascorso diversi giorni a configurare e modificare e ancora non riesco a farlo compilare su Windows. L’autore usa cmake per orgnize codice e sotto-progetti. E ha creato molti script bat o shell e macro cmake, è molto difficile da capire e configurare. In breve, se vuoi qualcosa che FireBreath attualmente non fornisce, avrai una sfortuna, è molto difficile aggiungere nuove funzionalità.

  2. Nixysa. Non penso che sia stato triggersmente sviluppato. La documentazione è scarsa E dai commenti della pagina wiki: https://code.google.com/p/nixysa/wiki/HelloWorldWalkThru Siamo in grado di sapere che gli utenti non sono in grado di ottenere aiuto e hanno problemi a farlo funzionare su Windows

  3. Juce. Non è appositamente per la creazione di plug-in del browser. NON supporta Linux. L’autore pensa che NPAPI sta per morire, quindi non ha intenzione di supportare Linux o aggiungere nuove funzionalità.

  4. QtBrowserPlugin. Non è ansible trovarlo nella documentazione più tardi di QT 4.5. In un’altra parola, non viene mantenuto (e rimosso da Qt 5.0)

Aggiornerò questa risposta una volta trovato di più.

Aggiornamento: Chrome ha abbandonato il supporto NPAPI . Penso che in futuro diventerà sempre più difficile scrivere plugin in C ++ perché manca il supporto dei browser.

Browser come i browser basati su Netscape, Chrome, Safari e Opera utilizzano il sistema di plugin NPAPI, puoi imparare come scrivere i plugin NPAPI in https://developer.mozilla.org/en/Plugins e http://code.google.com/ cromo / estensioni / npapi.html

Se conosci Qt, hanno alcune classi che semplificano l’implementazione dei plug-in del browser