2008-09-13 8 views
13

¿Cuál es la mejor manera de escribir una extensión de Safari? He escrito un par de extensiones XUL para Firefox, y ahora me gustaría escribir versiones para Safari. ¿Hay alguna manera de permitirle agregar botones o formularios a la interfaz de usuario del navegador, ya que esto no es posible con un administrador de entrada o un menú de servicio?La mejor manera de escribir una extensión de Safari 4

Respuesta

13

El desarrollo del complemento Safari no es trivial. La interfaz está escrita en Objective-C, y la mayor parte no forma parte de WebKit (por lo que no se puede ver la fuente), pero hay maquinaria para inspeccionar y aplicar parches a la jerarquía de objetos de una aplicación en ejecución. Requiere comprensión de Cocoa y Objective-C, pero no más bajo.

Aquí hay una descripción general de alto nivel que tenía en mis marcadores del proceso http://livingcode.org/2006/tab-dumping-in-safari. Repasa la creación de complementos de Safari utilizando Python con código de trabajo (probablemente obsoleto). En lugar de Python puede usar cualquier cosa que tenga enlaces de Objective-C.

Hay dos partes principales: a que

Leer los enlaces de arriba le dará el alcance del proyecto.

+0

Solo para aclarar, los administradores de entrada ≠ Complementos Safari. Safari tiene una arquitectura de complemento, no es lo que esperan los desarrolladores en comparación con Firefox. Esta respuesta proporciona excelentes consejos para el enfoque del administrador de entrada. Mi respuesta a continuación tiene más información sobre los complementos "verdaderos", aunque es poco probable que ese enfoque satisfaga sus necesidades específicas en este caso. –

+0

Ahora quiero hacer un plugin de safari con simbl, y he leído la Guía de sillón para la ingeniería inversa de cacao. pero cuando implemente el método - (vacío) cargar; cómo usar el complemento para obtener el objeto DOM del safari, como PIC o Flash URL? Muchas gracias ! – jin

4

¿Hay algún modo que le permita agregar botones o formularios a la IU del navegador, ya que esto no es posible con un administrador de entrada o un menú de servicio?

En realidad, con un InputManager, que sería ser posible. SIMBL, la técnica común para las extensiones de Safari, es simplemente una envoltura alrededor de InputManagers - que representa S mart I Nput M anager B undle L ALA DE RUEDAS. Puede agregar cosas a la barra de menú, a la barra de herramientas, a los diálogos, a cualquier lugar, simplemente extendiendo las clases existentes de Safari.

Dicho esto, escribir extensiones para Safari no solo no es trivial, como dijo æon, sino que también es totalmente incompatible. Hay algunos relativamente populares, como Inquisitor (adquirido recientemente por Yahoo!) y Gears de Google, pero en su mayor parte no se parecen a las extensiones de Firefox, que son una técnica ampliamente utilizada y respaldada oficialmente.

También definitivamente debe tener en cuenta el especial limitations of InputManagers on Leopard.

0

Además, para tener en cuenta: Apple ha declarado que InputManagers está siendo severamente limitado a partir de Leopard y no se ejecutará en aplicaciones de 64 bits por Apple Leopard Release Notes. Esto es especialmente interesante teniendo en cuenta que la mayoría de las aplicaciones serán de 64 bits en Snow Leopard (incluido, presumiblemente, Safari). Apple definitivamente está tratando de eliminar a InputManager como un vector para reemplazar y ampliar la funcionalidad. Safari necesita desesperadamente un mecanismo de extensión.

5

Nadie parece haber mencionado siquiera el hecho de que Safari realmente admite plugins verdaderos, los hacks de administrador de entrada definitivamente no lo son.

"WebKit plug-in de programación Temas" http://developer.apple.com/documentation/InternetWeb/Conceptual/WebKit_PluginProgTopic/

Esto es cómo se implementan las cosas como soporte para PDF y contenido Flash. Eche un vistazo dentro de su directorio /Library/Internet Plug-ins/ para ver ejemplos.

Por supuesto, existen limitaciones inherentes, y es posible que no pueda lograr lo que espera en cuanto a la modificación de la IU. Los complementos de Safari no pueden hacer todas las cosas que los hackers de Input Manager pueden, pero funcionarán en WebKit en cualquier lugar y en futuras versiones del sistema operativo. Nota: Safari es de 64 bits por defecto en Snow Leopard, por lo que no funcionan los Administradores de entrada. Me falta Safari AdBlock ya ... :-(Me encantaría verlo reescrito como un plugin de buena fe

10

Las cosas han cambiado recientemente. Apple ahora tiene una API de extensiones disponible como parte de Safari 5. Puedes encontrar más sobre Apple's site y por joining the Safari Developer Program.

Extensiones a Safari tienen que ser firmados digitalmente, pero se puede obtener el certificado de firma gratuito de Apple. Esta es la manera legítima de obtener su extensión a Safari sin recurrir a hacks que probablemente romper cada vez que Apple actualiza Safari.

+0

+1 para actualizar esto, incluiría que necesitan aprobación, aunque ... no es que esto sorprenda a nadie, pero aún así vale la pena. –

+0

¡Hecho y hecho! Gracias. –

+0

En realidad no necesitan aprobación, solo necesitan estar firmados digitalmente con un certificado de Apple. –

0

Safari no tienen que ser aprobados por manzana Solo tienes un certificado de desarrollador (gratis) para hacerlos, pero puedes pasarlos y aunque Apple está creando la Galería de extensiones, no tienes que distribuirla allí. Como puede ver, ya hay bastantes extensiones que puede probar hoy. El certificado solo asegura que no ha sido manipulado.

http://safariextensions.tumblr.com/

0

Si desea buscar en una extensión existente para ver cómo se hace, descargarlo o conseguirlo de sus extensiones de Safari carpeta y cambiar el .safariextz a .xar luego abrir/extraer con Pacifista para ver el código y si desea agregarlo a la aplicación Extension Builder.

Cuestiones relacionadas