35 votes

Comment écrire un plugin de navigateur ?

Je suis curieux de connaître la procédure d'écriture de plugins pour des navigateurs tels que Chrome, Safari et Opera. Je pense plus particulièrement à Windows et je préférerais travailler avec C++.

Existe-t-il des outils ou des tutoriels détaillant le processus ?

Note : Je ne fais pas référence aux extensions ou "addons". Je parle d'un plugin similaire à celui dont disposent Flash et Adobe Reader pour gérer des types de contenu spécifiques.

41voto

Georg Fritzsche Points 59185

Comme d'autres l'ont souligné, les plugins pour ces navigateurs sont écrits à l'aide de l'option NPAPI .

Remarque : Firefox et Chrome proposent la plupart des plugins par défaut. bientôt au click-to-play Chrome prévoit de supprimer totalement l'INPAP . L'utilisation de NPAPI pour les nouveaux projets est déconseillée à ce stade.

Ressources pour démarrer avec NPAPI :

La NPAPI elle-même est relativement peu complexe, mais il existe des outils et des structures qui peuvent vous aider à l'utiliser :

  • Souffle de feu - cadre multi-navigateurs et multiplateformes pour les plugins
  • Nixysa - générer du glue-code pour les plugins NPAPI
  • JUCE - cadre d'application offrant également un support pour les plugins
  • QtBrowserPlugin - Cadre de plugin de navigateur basé sur Qt

5voto

Tyler Long Points 1216

J'ai étudié certains cadres répertoriés par Georg, et voici ce que j'obtiens :

  1. Souffle de feu. Je pense que c'est presque le meilleur disponible. Vous pouvez créer un plugin de navigateur multiplateforme avec FireBreath en quelques jours. J'ai trouvé quelques inconvénients : Il ne supporte pas les caractères utf-8 sous Windows. Par exemple : s'il y a des caractères chinois dans un nom de fichier, vous ne pouvez pas lire le contenu de ce fichier. Je pense que boost/locale peut résoudre ce problème. Mais FireBreath ne contient pas de boost/locale. Oui, vous pouvez utiliser un boost externe, mais j'ai passé plusieurs jours à le configurer et à l'ajuster et je n'ai toujours pas réussi à le faire compiler sous Windows. L'auteur utilise cmake pour organiser le code et les sous-projets. Et il a créé beaucoup de scripts bat ou shell scripts et de macros cmake, c'est très difficile à comprendre et à configurer. En bref, si vous voulez quelque chose que FireBreath ne fournit pas actuellement, vous n'aurez pas de chance, il est très difficile d'ajouter de nouvelles fonctionnalités.

  2. Nixysa. Je ne pense pas qu'il soit activement développé. La documentation est médiocre. Et d'après les commentaires de la page wiki : https://code.google.com/p/nixysa/wiki/HelloWorldWalkThru Nous savons que les utilisateurs n'ont pas pu obtenir d'aide du tout et qu'ils ont eu des difficultés à faire fonctionner le logiciel sous Windows.

  3. JUCE. Il n'est pas spécialement conçu pour créer des plugins de navigateur. Il n'est PAS compatible avec Linux. L'auteur pense que NPAPI va mourir et n'a donc pas l'intention de prendre en charge Linux ou d'ajouter de nouvelles fonctionnalités.

  4. QtBrowserPlugin. Vous ne pouvez pas le trouver dans la documentation postérieure à QT 4.5. En d'autres termes, il n'est pas maintenu (et a été supprimé de Qt 5.0).

Je mettrai à jour cette réponse dès que j'en saurai plus.

Mise à jour : Chrome abandonné NPAPI le soutien. Je pense qu'à l'avenir, il sera de plus en plus difficile d'écrire des plugins en C++ à cause du manque de support des navigateurs.

2voto

SHiNKiROU Points 6052

Les navigateurs tels que les navigateurs basés sur Netscape, Chrome, Safari et Opera utilisent le système de plugins NPAPI. Vous pouvez apprendre à écrire des plugins NPAPI dans la rubrique https://developer.mozilla.org/en/Plugins y http://code.google.com/chrome/extensions/npapi.html

0voto

Henrik Hansen Points 1065

Si vous connaissez Qt, sachez qu'il existe des classes qui facilitent la mise en œuvre des plug-ins de navigateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X