web-dev-qa-db-fra.com

Comment écrire un plugin de navigateur?

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

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

Note: Je ne fais pas référence aux extensions ou "addons". Je fais référence à un plugin similaire à la façon dont Flash et Adobe Reader ont des plugins pour gérer des types de contenu spécifiques.

35
Nathan Osman

Comme d'autres le soulignent, les plugins pour ces navigateurs sont écrits en utilisant NPAPI .

Remarque: Firefox et Chrome sera par défaut la plupart des plugins pour cliquer pour jouer bientôt , avec Chrome planification de éliminer complètement le NPAPI . Le NPAPI pour les nouveaux projets est déconseillé à ce stade.

Ressources pour démarrer avec NPAPI:

Le NPAPI lui-même est cependant de niveau relativement bas, mais il existe des outils et des cadres qui peuvent vous y aider:

  • FireBreath - cadre multi-navigateur, multi-plateforme pour les plugins
  • Nixysa - générer du code glue pour les plugins NPAPI
  • JUCE - framework d'application fournissant également un support pour les plugins
  • QtBrowserPlugin - Framework de plugin de navigateur basé sur Qt
41
Georg Fritzsche

J'ai étudié certains frameworks listés par Georg, 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 prend pas en charge 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 crois 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 à configurer et à peaufiner et je n'arrive toujours pas à le 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 et de macros cmake, c'est très difficile à comprendre et à configurer. En bref, si vous voulez quelque chose que FireBreath ne fournit actuellement pas, vous aurez de la malchance, 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 pauvre. Et à partir des commentaires de la page wiki: https://code.google.com/p/nixysa/wiki/HelloWorldWalkThr Nous pouvons savoir que les utilisateurs ne pouvaient pas du tout obtenir d'aide et avaient du mal à l'obtenir fonctionnant sous Windows

  3. JUCE. Ce n'est pas spécialement pour créer des plugins de navigateur. Il ne prend PAS en charge Linux. L'auteur pense que NPAPI va mourir donc il n'a pas l'intention de supporter Linux ou d'ajouter de nouvelles fonctionnalités.

  4. QtBrowserPlugin. Vous ne pouvez pas le trouver dans la documentation postérieure à QT 4.5. Dans un autre Word, il n'est pas maintenu (et supprimé de Qt 5.0)

Je mettrai à jour cette réponse une fois que j'en trouverai plus.

Mise à jour: Chrome a chuté [~ # ~] npapi [~ # ~] support. Je pense que dans le futur il devient de plus en plus difficile d'écrire des plugins en C++ en raison du manque de support des navigateurs.

5
Tyler Long

Des navigateurs comme les navigateurs basés sur Netscape, Chrome, Safari et Opera utilise le système de plugins NPAPI, vous pouvez apprendre à écrire des plugins NPAPI dans https://developer.mozilla.org/en/Plugins et http://code.google.com/chrome/extensions/npapi.html

2
Ming-Tang

Si vous connaissez Qt, ils ont des classes qui facilitent l'implémentation des plug-ins de navigateur

0
Henrik Hansen