2009-05-10 10 views
0

Je veux que du code JavaScript développé personnellement soit exécuté chaque fois que je charge une page dans Safari. On dirait que l'addblock pour Safari fait ça. Quelqu'un sait-il comment faire ça?Comment développer un addon pour Safari?

Safari n'est pas extensible. Il n'y a pas de framework addon pour ça. Mais il existe encore d'autres addons adblock et verious disponibles, bien que les développeurs Webkit et Safari d'Apple découragent les utilisateurs de les utiliser, les qualifiant de 'hacks binaires'. Il semble que certains de ces addons utilisent InputManager, qui n'est pas du tout documenté, du moins pas pour la façon dont les gens l'utilisent pour charger des scripts dans Safari. Je suppose que je vais devoir rétrograder pour voir comment addblock le fait, mais avant que je le fasse, j'ai pensé que je demanderais par ici. Quelqu'un sait?

Répondre

3

Les gestionnaires d'entrée sont couramment utilisés (ab) pour injecter du code arbitraire dans le runtime d'une autre application. Une fois que vous êtes là, vous devez effectuer une rétro-ingénierie assez de l'application elle-même pour comprendre comment obtenir le comportement que vous voulez; Habituellement, cela implique une méthode de swizzling pour remplacer les parties de l'application que vous piratez. Il n'est pas documenté car il n'y a pas d'API à documenter, mais vous pouvez en apprendre plus sur les différentes parties (comment écrire un gestionnaire d'entrée en général, comment fonctionne la méthode en Objective C, comment utiliser des outils comme class-dump) ensemble. Ce que vous décrivez ressemble cependant à Greasemonkey, et il y a déjà un ou deux hacks pour activer le comportement de type Greasemonkey dans Safari. Je suggère de voir si l'un d'entre eux répond à vos besoins en premier.

+0

Maintenant, je veux faire un plugin safari avec simbl, et j'ai lu le Guide du fauteuil à Cocoa Reverse Engineering. mais lors de l'implémentation de la méthode - (void) load; comment utiliser le plugin pour obtenir l'objet DOM safari, comme PIC ou Flash URL? Merci beaucoup ! – jin

Questions connexes