Лучший способ написать расширение Safari 4 [закрыто]
Вопрос
Как лучше всего написать расширение Safari?Я написал пару XUL-расширений для Firefox, и теперь мне хотелось бы написать их версии для Safari.Есть ли способ, позволяющий добавлять кнопки или формы в пользовательский интерфейс браузера, поскольку это невозможно с помощью диспетчера ввода или сервисного меню?
Решение
С выпуском Safari 5.0 Apple выпустила новую платформу расширений для разработчиков.По функциям он похож на фреймворк расширений Firefox, позволяющий настраивать кнопки, панели инструментов, контекстные меню, инъекции с использованием JavaScript и HTML 5.
Подробнее по этой ссылке
Другие советы
Разработка плагина Safari нетривиальна.Интерфейс написан на Objective-C, и большая его часть даже не является частью WebKit (поэтому вы не можете увидеть исходный код), но существует механизм для проверки и исправления иерархии объектов работающего приложения.Требуется понимание Cocoa и Objective-C, но не ниже.
Вот общий обзор процесса, который у меня был в закладках. http://livingcode.org/2006/tab-dumping-in-safari.Здесь рассматривается создание плагинов Safari с использованием Python с рабочим (возможно, устаревшим) кодом.Вместо Python вы можете использовать все, что имеет привязки Objective-C.
В нем есть две основные части:
Вам необходимо прикрепить свой код к работающему Safari.Обычно это делается с помощью SIMBL. http://www.culater.net/software/SIMBL/SIMBL.php.
Оказавшись внутри, вам нужно решить, что исправлять.Есть руководство по реверсированию приложений Cocoa. http://www.culater.net/wiki/moin.cgi/CocoaReverseEngineering, который ссылается на самый важный инструмент — дамп классов. http://www.codethecode.com/projects/class-dump/ (ссылка на вики битая).Class-dump дает вам полную иерархию классов Safari, где вы можете по именам догадаться, что именно вам нужно исправить.Это очень метод проб и ошибок.
Прочитав ссылки выше, вы поймете масштаб проекта.
В последнее время все изменилось.У Apple теперь есть API расширений, доступный как часть Safari 5.Вы можете узнать больше на сайт Apple и по присоединение к программе разработчиков Safari.
Расширения Safari должны быть подписаны цифровой подписью, но вы можете бесплатно получить сертификат подписи от Apple.Это законный способ добавить ваше расширение в Safari, не прибегая к взломам, которые, скорее всего, будут ломаться каждый раз, когда Apple обновляет Safari.
Кажется, никто даже не упомянул тот факт, что Safari на самом деле поддерживает настоящие плагины, а хаки диспетчера ввода определенно не поддерживаются.
«Темы по программированию подключаемых модулей WebKit» http://developer.apple.com/documentation/InternetWeb/Conceptual/WebKit_PluginProgTopic/
Именно так реализованы такие вещи, как поддержка PDF и Flash-контента.Загляните внутрь своего /Library/Internet Plug-ins/
каталог, чтобы увидеть примеры.
Конечно, существуют присущие ограничения, и вы, возможно, не сможете добиться того, на что надеетесь, в отношении модификации пользовательского интерфейса.Плагины Safari не могут делать все то, что могут хаки Input Manager, но они будут работать в WebKit где угодно и в будущих версиях ОС. Примечание: По умолчанию Safari в Snow Leopard является 64-битным, поэтому диспетчеры ввода не работают.я скучаю Блокировка рекламы в Сафари уже...:-( Мне бы хотелось, чтобы его переписали в полноценный плагин.
Есть ли способ, позволяющий добавлять кнопки или формы в пользовательский интерфейс браузера, поскольку это невозможно с помощью диспетчера ввода или сервисного меню?
На самом деле, с помощью InputManager это бы быть возможным.SIMBL, распространенный метод расширений Safari, представляет собой просто оболочку для InputManager. Срынок яввод Манагер Бразвернуть лпогрузчик.Вы можете добавлять элементы в строку меню, на панель инструментов, в диалоговые окна, где угодно, просто расширяя существующие классы Safari.
Тем не менее, написание расширений для Safari не только нетривиально, как сказал æon, но и совершенно не поддерживается.Есть некоторые относительно популярные расширения, такие как Inquisitor (недавно приобретенный Yahoo!) и Gears от Google, но по большей части они очень отличаются от расширений Firefox, которые являются официально поддерживаемой и широко используемой технологией.
Вы также обязательно захотите принять во внимание специальные ограничения InputManager в Leopard.
Также следует отметить: Apple заявила, что входные менеджеры строго ограничены начиная с Leopard и не будут работать в 64-битных приложениях Apple. Примечания к выпуску Леопарда.Это особенно интересно, учитывая, что большинство приложений в Snow Leopard будут 64-битными (включая, предположительно, Safari).Apple определенно пытается уничтожить InputManager как средство переопределения и расширения функциональности.Safari отчаянно нуждается в механизме расширения.
Расширения Safari НЕ требуют одобрения Apple.Для их создания у вас просто есть сертификат разработчика (бесплатный), но вы можете передавать их другим, и хотя Apple создает галерею расширений, вам не нужно распространять ее через нее.Как видите, уже сегодня существует немало расширений, которые вы можете попробовать.Сертификат просто гарантирует, что он не был подделан.
Если вы хотите просмотреть существующее расширение и узнать, как оно сделано, загрузите его или получите из папки расширений Safari, затем измените .safariextz на .xar, затем откройте/извлеките его с помощью Pacifist, чтобы просмотреть код и, если хотите, добавить его в приложение Extension Builder.