plugins - plus - La mejor forma de escribir una extensión de Safari 4
safari extensions (8)
¿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?
El desarrollo del complemento de 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 en esto:
Debe adjuntar su código a un Safari en ejecución. Esto se hace típicamente con SIMBL http://www.culater.net/software/SIMBL/SIMBL.php .
Una vez que estás dentro, necesitas averiguar qué parchear. Hay un tutorial sobre la inversión de las aplicaciones Cocoa http://www.culater.net/wiki/moin.cgi/CocoaReverseEngineering , que enlaza con la herramienta más importante, class-dump http://www.codethecode.com/projects/class- dump / (el enlace en wiki está roto). Class-dump te da una jerarquía completa de las clases de Safari, donde puedes adivinar por nombres qué es lo que necesitas, específicamente, parchear. Este es un modo muy de prueba y error.
Leer los enlaces de arriba le dará el alcance del proyecto.
Además, para tener en cuenta: Apple ha declarado que los InputManagers están siendo severamente limitados a partir de Leopard y no se ejecutarán en aplicaciones de 64 bits por cada 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.
Nadie parece haber mencionado el hecho de que Safari en realidad admite plugins verdaderos, que definitivamente no son los hacks del administrador de entrada.
"Temas de programación de complementos de WebKit" http://developer.apple.com/documentation/InternetWeb/Conceptual/WebKit_PluginProgTopic/
Así es como se implementan cosas como soporte para contenido PDF y 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 interfaz de usuario. 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 estoy perdiendo Safari AdBlock ya ... :-( Me encantaría verlo reescrito como un plugin de buena fe.
Con el lanzamiento de Safari 5.0, Apple lanzó un nuevo marco de extensión para que lo usen los desarrolladores. En características, se parece al marco de extesion de Firefox que permite personalizar botones, barras de herramientas, menús contextuales, inyecciones usando javascript y html 5
Más en este enlace
Las cosas han cambiado recientemente. Apple ahora tiene una API de extensiones disponible como parte de Safari 5. Puede encontrar más información en el sitio de Apple y unirse al Programa de desarrolladores de Safari .
Las extensiones de Safari deben estar firmadas digitalmente, pero puede obtener el certificado de firma gratis de Apple. Esta es la forma legítima de obtener su extensión en Safari sin recurrir a hacks que probablemente se rompan cada vez que Apple actualice Safari.
Las extensiones de Safari NO necesitan ser aprobadas por Apple. 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.
Si desea ver una extensión existente para ver cómo se hace, descárguelo o descárguelo de la carpeta de extensiones de Safari, luego cambie .safariextz a .xar, luego abra / extraiga con Pacifist para ver el código y si desea agregarlo a la aplicación Extension Builder.
¿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?
En realidad, con un InputManager, sería posible. SIMBL, la técnica común para las extensiones de Safari, es simplemente una envoltura alrededor de InputManagers, es sinónimo de S mart I nput M anager B undle L oder. 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 no está respaldado. 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 debes tener en cuenta las limitaciones especiales de InputManagers en Leopard .