Лучший способ написать расширение Safari 4 [закрыто]

StackOverflow https://stackoverflow.com/questions/60271

  •  09-06-2019
  •  | 
  •  

Вопрос

Как лучше всего написать расширение Safari?Я написал пару XUL-расширений для Firefox, и теперь мне хотелось бы написать их версии для Safari.Есть ли способ, позволяющий добавлять кнопки или формы в пользовательский интерфейс браузера, поскольку это невозможно с помощью диспетчера ввода или сервисного меню?

Это было полезно?

Решение

С выпуском Safari 5.0 Apple выпустила новую платформу расширений для разработчиков.По функциям он похож на фреймворк расширений Firefox, позволяющий настраивать кнопки, панели инструментов, контекстные меню, инъекции с использованием JavaScript и HTML 5.

Подробнее по этой ссылке

https://developer.apple.com/documentation/safariextensions

Другие советы

Разработка плагина 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 создает галерею расширений, вам не нужно распространять ее через нее.Как видите, уже сегодня существует немало расширений, которые вы можете попробовать.Сертификат просто гарантирует, что он не был подделан.

http://safariextensions.tumblr.com/

Если вы хотите просмотреть существующее расширение и узнать, как оно сделано, загрузите его или получите из папки расширений Safari, затем измените .safariextz на .xar, затем откройте/извлеките его с помощью Pacifist, чтобы просмотреть код и, если хотите, добавить его в приложение Extension Builder.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top