Meilleure façon d'écrire une extension Safari 4
Quelle est la meilleure façon d'écrire un Safari extension? J'ai écrit un couple XUL extensions pour Firefox, et maintenant, je voudrais écrire des versions de Safari. Est-il un moyen qui vous permettra d'ajouter des boutons ou des formes pour le navigateur de l'INTERFACE utilisateur, puisque ce n'est pas possible avec un Input manager ou le Service menu?
source d'informationauteur username
Vous devez vous connecter pour publier un commentaire.
Avec la sortie de Safari 5.0, Apple a sorti une nouvelle extension de cadre pour les développeurs. Dans les caractéristiques, il semble similaire à Firefox cadre de l'extension permettant de personnaliser les boutons, les barres d'outils, les menus contextuels, les injections à l'aide de javascript et html 5
Plus à ce lien
https://developer.apple.com/documentation/safariextensions
Safari développement d'un plugin est non-trivial. L'interface est écrite en Objective-C, et plus il est même pas partie de WebKit (donc vous ne pouvez pas voir la source), mais il y a des machines à inspecter et patch de la hiérarchie des objets d'une application en cours d'exécution. Elle exige la compréhension de Cocoa et Objective-C, mais pas plus bas.
Voici un aperçu de haut niveau que j'avais dans mes favoris du processus http://livingcode.org/2006/tab-dumping-in-safari. Il va sur la création de Safari plugins à l'aide de Python avec le travail (sans doute périmé) du code. Au lieu de Python que vous pouvez utiliser tout ce qui est Objective-C liaisons.
Il y a deux grandes parties:
Vous avez besoin de joindre votre code à l'exécution d'un Safari. Ceci est généralement fait avec SIMBL http://www.culater.net/software/SIMBL/SIMBL.php.
Une fois que vous êtes à l'intérieur, vous avez besoin de comprendre ce patch. Il y a un tutoriel sur l'inversion de Cacao applications http://www.culater.net/wiki/moin.cgi/CocoaReverseEngineeringdes liens vers l'outil le plus important, en classe de vidage http://www.codethecode.com/projects/class-dump/ (le lien sur le wiki est cassé). Classe-dump vous donne une hiérarchie complète de Safari classes, où vous pouvez le deviner par les noms de ce que, précisément, vous avez besoin de patch. C'est un très essai et d'erreur de mode.
Lisant les liens ci-dessus vous donnera la portée du projet.
Les choses ont changé récemment. Apple a maintenant une des extensions de l'API disponible en tant que partie de Safari 5. Vous pouvez en savoir plus sur Le site d'Apple et par rejoindre le Programme pour Développeurs Safari.
Extensions pour Safari doivent être signés numériquement, mais vous pouvez obtenir le certificat de signature de gratuit de Apple. C'est le moyen légitime pour obtenir votre extension dans Safari, sans avoir recours à des astuces qui vont à l'encontre de tous les temps de mises à jour Apple Safari.
Personne ne semble avoir encore mentionné le fait que Safari ne fait réellement en charge les plugins, ce qui d'entrée de gestionnaire de la plupart des hacks ne sont pas certainement.
C'est la façon dont les choses comme support pour le format PDF et le contenu Flash sont mis en œuvre. Jetez un coup d'œil à 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 pouvez pas être en mesure d'accomplir ce que vous espérez pour autant que l'INTERFACE utilisateur de la modification. Safari plugins ne peut pas faire toutes les choses que l'Entrée Gestionnaire de hacks peuvent, mais ils vont travailler dans WebKit n'importe où, et dans les futures versions de l'OS. Remarque: Safari est de 64 bits par défaut sur Snow Leopard, donc pas d'Entrée de travail des Gestionnaires. Je suis absent Safari AdBlock déjà... 🙁 j'aimerais voir il réécrit comme un véritable plugin.
En fait, avec un InputManager, il serait être possible. SIMBL, la technique courante pour les extensions Safari, est tout simplement un wrapper autour de InputManagers — il est synonyme de Smart jeentree Manager Bundle Loader. Vous pouvez ajouter des éléments à la barre de menu, la barre d'outils, boîtes de dialogue, n'importe où, simplement, par l'extension Safari classes existantes.
Cela dit, écrire des extensions pour Safari n'est pas seulement non-triviale, æon dit, mais aussi complètement pris en charge. Il y a quelques relativement populaire là-bas, comme Inquisiteur (récemment acquis par Yahoo!) et Google Gears, mais pour la plupart, c'est très différent de Firefox extensions, qui sont officiellement pris en charge, technique largement utilisée.
Vous aussi certainement envie de prendre en compte les les limites de InputManagers sur Leopard.
Aussi, la note d'Apple a déclaré que InputManagers sont sévèrement limitées à Leopard et ne fonctionnera pas dans les applications 64 bits par Apple Leopard Release Notes. Ceci est particulièrement intéressant compte tenu de la plupart des applications 64 bits dans Snow Leopard (y compris sans doute Safari). Apple est certainement essayer de gommer InputManager comme vecteur pour le remplacement et l'extension des fonctionnalités. Safari a désespérément besoin d'un mécanisme d'extension.
Extensions Safari n'ont PAS besoin d'être Approuvées par apple. Vous venez d'avoir un développeur cert (gratuit) pour les faire, mais vous pouvez les passer autour et même si Apple est de faire de l'Extension de la Galerie, vous n'avez pas à le distribuer. Comme vous pouvez le voir il y a déjà quelques extensions que vous pouvez essayer aujourd'hui. Le cert s'assure juste qu'il n'a pas été altéré.
http://safariextensions.tumblr.com/
Si vous voulez regarder une extension existante pour voir comment c'est fait, le télécharger ou obtenir auprès de votre Safari dossier extensions puis changer la .safariextz .xar puis ouvrez/extrait avec Pacifiste pour afficher le code et si vous voulez ajouter l'Extension Builder app.