Question

Quelle est la meilleure façon d’écrire une extension Safari ?J'ai écrit quelques extensions XUL pour Firefox et j'aimerais maintenant en écrire des versions pour Safari.Existe-t-il un moyen qui vous permettrait d'ajouter des boutons ou des formulaires à l'interface utilisateur du navigateur, car cela n'est pas possible avec un gestionnaire de saisie ou un menu Service ?

Était-ce utile?

La solution

Avec la sortie de Safari 5.0, Apple a publié un nouveau cadre d'extension que les développeurs peuvent utiliser.Dans les fonctionnalités, il ressemble au framework d'extension Firefox permettant de personnaliser les boutons, les barres d'outils, les menus contextuels, les injections à l'aide de javascript et html 5.

Plus sur ce lien

https://developer.apple.com/documentation/safariextensions

Autres conseils

Le développement du plugin Safari n’est pas trivial.L'interface est écrite en Objective-C, et la majeure partie ne fait même pas partie de WebKit (vous ne pouvez donc pas voir la source), mais il existe un mécanisme pour inspecter et corriger la hiérarchie d'objets d'une application en cours d'exécution.Cela nécessite une compréhension de Cocoa et d'Objective-C, mais pas moins.

Voici un aperçu de haut niveau que j'avais dans mes favoris du processus http://livingcode.org/2006/tab-dumping-in-safari.Il passe en revue la création de plugins Safari en utilisant Python avec du code fonctionnel (probablement obsolète).Au lieu de Python, vous pouvez utiliser tout ce qui a des liaisons Objective-C.

Il comporte deux parties principales :

La lecture des liens ci-dessus vous donnera la portée du projet.

Les choses ont changé récemment.Apple dispose désormais d'une API d'extensions disponible dans le cadre de Safari 5.Vous pouvez en savoir plus sur Le site d'Apple et par rejoindre le programme pour développeurs Safari.

Les extensions de Safari doivent être signées numériquement, mais vous pouvez obtenir le certificat de signature gratuitement auprès d'Apple.C'est le moyen légitime d'intégrer votre extension dans Safari sans recourir à des hacks qui risquent de se briser à chaque fois qu'Apple met à jour Safari.

Personne ne semble même avoir mentionné le fait que Safari prend en charge de vrais plugins, ce qui n'est certainement pas le cas des hacks du gestionnaire d'entrée.

"Sujets de programmation du plug-in WebKit" http://developer.apple.com/documentation/InternetWeb/Conceptual/WebKit_PluginProgTopic/

C'est ainsi que des éléments tels que la prise en charge du contenu PDF et Flash sont implémentés.Jetez un oeil à l'intérieur de votre /Library/Internet Plug-ins/ répertoire pour voir des exemples.

Bien sûr, il existe des limites inhérentes et vous ne pourrez peut-être pas accomplir ce que vous espérez en matière de modification de l'interface utilisateur.Les plug-ins Safari ne peuvent pas faire tout ce que les hacks d'Input Manager peuvent faire, mais ils fonctionneront dans WebKit n'importe où et dans les futures versions du système d'exploitation. Note: Safari est en 64 bits par défaut sur Snow Leopard, donc aucun gestionnaire d'entrée ne fonctionne.il me manque Safari AdBlock déjà...:-( J'adorerais le voir réécrit en tant que plugin authentique.

Existe-t-il un moyen qui vous permettrait d'ajouter des boutons ou des formulaires à l'interface utilisateur du navigateur, car cela n'est pas possible avec un gestionnaire de saisie ou un menu Service ?

En fait, avec un InputManager, il serait être possible.SIMBL, la technique courante pour les extensions Safari, est simplement un wrapper autour d'InputManagers — il signifie Smarché jenentrée Mgestionnaire Bdérouler Lchargeur.Vous pouvez ajouter des éléments à la barre de menus, à la barre d'outils, aux boîtes de dialogue, n'importe où, simplement en étendant les classes existantes de Safari.

Cela dit, écrire des extensions pour Safari n’est pas seulement non trivial, comme l’a dit æon, mais aussi totalement non pris en charge.Il en existe des extensions relativement populaires, comme Inquisitor (récemment acquis par Yahoo!) et Gears de Google, mais pour la plupart, elles sont très différentes des extensions de Firefox, qui sont une technique largement utilisée et officiellement prise en charge.

Vous voulez aussi certainement prendre en considération les particularités limitations des InputManagers sur Leopard.

À noter également : Apple a déclaré que les InputManagers sont sévèrement limités à partir de Leopard et ne fonctionneront pas dans les applications 64 bits d'Apple. Notes de version de Léopard.Ceci est particulièrement intéressant étant donné que la plupart des applications seront en 64 bits dans Snow Leopard (y compris probablement Safari).Apple essaie définitivement d'effacer InputManager en tant que vecteur permettant de remplacer et d'étendre les fonctionnalités.Safari a désespérément besoin d'un mécanisme d'extension.

Les extensions Safari n'ont PAS besoin d'être approuvées par Apple.Vous disposez simplement d'un certificat de développeur (gratuit) pour les créer, mais vous pouvez les transmettre et bien qu'Apple crée la galerie d'extensions, vous n'êtes pas obligé de la distribuer par là.Comme vous pouvez le constater, il existe déjà de nombreuses extensions que vous pouvez essayer aujourd'hui.Le certificat garantit simplement qu'il n'a pas été falsifié.

http://safariextensions.tumblr.com/

Si vous souhaitez examiner une extension existante pour voir comment cela se fait, téléchargez-la ou récupérez-la dans votre dossier d'extensions Safari, puis remplacez le .safariextz par .xar, puis ouvrez/extrayez avec Pacifist pour afficher le code et si vous souhaitez l'ajouter à l'application Extension Builder.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top