Melhor maneira de escrever uma extensão Safari 4 [fechado]
Pergunta
Qual é a melhor maneira de escrever uma extensão do Safari?Escrevi algumas extensões XUL para Firefox e agora gostaria de escrever versões delas para Safari.Existe uma maneira que permita adicionar botões ou formulários à interface do navegador, já que isso não é possível com um gerenciador de entrada ou menu de serviço?
Solução
Com o lançamento do Safari 5.0, a Apple lançou uma nova estrutura de extensão para uso dos desenvolvedores.Em recursos é semelhante ao framework de extensão do Firefox permitindo customizar botões, barras de ferramentas, menus de contexto, injeções usando javascript e html 5
Mais neste link
Outras dicas
O desenvolvimento de plugins para Safari não é trivial.A interface é escrita em Objective-C, e a maior parte dela nem faz parte do WebKit (então você não pode ver a fonte), mas há máquinas para inspecionar e corrigir a hierarquia de objetos de um aplicativo em execução.Requer compreensão de Cocoa e Objective-C, mas não inferior.
Aqui está uma visão geral de alto nível que tive em meus favoritos do processo http://livingcode.org/2006/tab-dumping-in-safari.Ele aborda a criação de plug-ins do Safari usando Python com código funcional (provavelmente desatualizado).Em vez de Python você pode usar qualquer coisa que tenha ligações Objective-C.
Existem duas partes principais:
Você precisa anexar seu código a um Safari em execução.Isso normalmente é feito com SIMBL http://www.culater.net/software/SIMBL/SIMBL.php.
Uma vez lá dentro, você precisa descobrir o que consertar.Há um tutorial sobre como reverter aplicações de Cocoa http://www.culater.net/wiki/moin.cgi/CocoaReverseEngineering, que está vinculado à ferramenta mais importante, class-dump http://www.codethecode.com/projects/class-dump/ (o link no wiki está quebrado).Class-dump oferece uma hierarquia completa de classes do Safari, onde você pode adivinhar pelos nomes o que, especificamente, precisa corrigir.Este é um modo de tentativa e erro.
A leitura dos links acima lhe dará o escopo do projeto.
As coisas mudaram recentemente.A Apple agora tem uma API de extensões disponível como parte do Safari 5.Você pode descobrir mais em Site da Apple e por ingressando no Programa para Desenvolvedores Safari.
As extensões do Safari precisam ser assinadas digitalmente, mas você pode obter o certificado de assinatura gratuitamente da Apple.Esta é a maneira legítima de colocar sua extensão no Safari sem recorrer a hacks que provavelmente serão interrompidos sempre que a Apple atualizar o Safari.
Ninguém parece ter mencionado o fato de que o Safari realmente suporta plug-ins verdadeiros, o que os hacks do gerenciador de entrada definitivamente não são.
"Tópicos de programação do plug-in WebKit" http://developer.apple.com/documentation/InternetWeb/Conceptual/WebKit_PluginProgTopic/
É assim que coisas como suporte para conteúdo PDF e Flash são implementadas.Dê uma olhada dentro do seu /Library/Internet Plug-ins/
diretório para ver exemplos.
É claro que existem limitações inerentes e talvez você não consiga realizar o que espera no que diz respeito à modificação da IU.Os plug-ins do Safari não podem fazer todas as coisas que os hacks do Input Manager podem, mas funcionarão no WebKit em qualquer lugar e em versões futuras do sistema operacional. Observação: O Safari é de 64 bits por padrão no Snow Leopard, portanto nenhum gerenciador de entrada funciona.estou faltando AdBlock Safari já...:-( Eu adoraria vê-lo reescrito como um plugin genuíno.
Existe uma maneira que permita adicionar botões ou formulários à interface do navegador, já que isso não é possível com um gerenciador de entrada ou menu de serviço?
Na verdade, com um InputManager, seria seja possível.SIMBL, a técnica comum para extensões Safari, é simplesmente um wrapper em torno de InputManagers - significa Smercado EUentrada Mgerente Bdesfazer eucarregador.Você pode adicionar itens à barra de menus, à barra de ferramentas, às caixas de diálogo, em qualquer lugar, simplesmente estendendo as classes existentes do Safari.
Dito isto, escrever extensões para o Safari não é apenas trivial, como disse æon, mas também completamente sem suporte.Existem alguns relativamente populares por aí, como o Inquisitor (recentemente adquirido pelo Yahoo!) e o Gears do Google, mas na maior parte, é muito diferente das extensões do Firefox, que são uma técnica amplamente utilizada e com suporte oficial.
Você também definitivamente quer levar em consideração o especial limitações dos InputManagers no Leopard.
Além disso, observe - a Apple declarou que os InputManagers estão sendo severamente limitados a partir do Leopard e não serão executados em aplicativos de 64 bits por Apple Notas de versão do Leopard.Isso é especialmente interessante considerando que a maioria dos aplicativos será de 64 bits no Snow Leopard (incluindo presumivelmente o Safari).A Apple está definitivamente tentando destruir o InputManager como um vetor para substituir e estender a funcionalidade.O Safari precisa desesperadamente de um mecanismo de extensão.
As extensões do Safari NÃO precisam ser aprovadas pela Apple.Você só tem um certificado de desenvolvedor (gratuito) para criá-los, mas pode distribuí-los e, embora a Apple esteja fazendo a Galeria de Extensões, você não precisa distribuí-la por lá.Como você pode ver, já existem algumas extensões que você pode experimentar hoje.O certificado apenas garante que não foi adulterado.
Se você quiser ver uma extensão existente para ver como é feita, baixe-a ou obtenha-a na pasta de extensões do Safari, altere .safariextz para .xar e abra/extraia com o Pacifist para visualizar o código e, se desejar, adicione-o a o aplicativo Extension Builder.